我可以单击D3节点以获取alert()
;信息。我也可以拖动D3节点,但是当释放鼠标时,拖动也会触发单击行为。
有没有一种方法可以防止在拖动节点后发生单击行为?
这就是我所说的拖动:
var node = svg.selectAll(".node")
.data(graph.nodes)
.enter()
.append("g")
.attr("transform", function(d){return "translate("+d.x+","+d.y+")"})
.on("click", function(d){
if(d.user_id != "" && d.user_id != null){
parent.parent.openUserProfile(d.user_id);
}
})
.call(force.drag);
下面的一个答案建议添加类似以下代码的内容(以下),但是我认为上面的代码也必须进行修改以使它们协同工作。
var drag = d3.behavior.drag();
drag.on("dragend", function() {
d3.event.sourceEvent.stopPropagation(); // silence other listeners
});
最佳答案
正如docs所提到的:
var drag = d3.behavior.drag();
selection.call(drag);
drag.on("dragend", function() {
d3.event.sourceEvent.stopPropagation(); // silence other listeners
});
关于javascript - 拖动D3节点时防止单击 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30723592/