我可以单击 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
});
As the docs https://github.com/mbostock/d3/wiki/Drag-Behavior已经提到:
将拖动行为与交互事件的其他事件侦听器组合时,您还可以考虑停止源事件的传播以防止多个操作。
var drag = d3.behavior.drag();
selection.call(drag);
drag.on("dragend", function() {
d3.event.sourceEvent.stopPropagation(); // silence other listeners
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)