在拖动D3节点时防止点击动作
Prevent click action when dragging a D3 Node
我可以点击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
});
正如文档中提到的:
当将拖动行为与交互事件的其他事件侦听器结合使用时,您还可以考虑停止源事件的传播,以防止多个操作。
var drag = d3.behavior.drag();
selection.call(drag);
drag.on("dragend", function() {
d3.event.sourceEvent.stopPropagation(); // silence other listeners
});
相关文章:
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- 在d3中拖动一条线
- d3.js:在强制布局中使用缩放时,将禁用拖动
- 如何在D3中添加一个强制拖动事件,并使节点停留在我离开它的地方
- 如何使用d3's流星项目中的刷洗/拖动/缩放行为
- d3-单击时触发的拖动行为
- 实现平移,同时在d3强制布局中保持节点可拖动
- D3 区分具有拖动行为的元素的单击和拖动
- 如何使用鼠标单击和拖动来放大 D3
- 两个“调用”以拖动 d3 中的事件
- 使用 D3.js 拖动元素时滚动
- d3.js拖动多个图形上的点
- d3 拖动事件不会在 Firefox 中终止
- 将参数添加到 d3 拖动行为后,元素不再可拖动
- d3.js从下到上力布局 - 拖动行为
- D3.js SVG 图像拖动有效,但引发许多类型错误
- 为什么不是't我在d3中的拖动比例
- d3.js强制布局拖动在删除节点后停止工作
- 使用initMouseEvent拖动d3/cola程序化节点
- 在拖动D3节点时防止点击动作