拖动D3节点时防止单击动作

用户名

我可以单击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
});
罗希特416

正如文档所述:

将拖动行为与其他事件侦听器组合以进行交互事件时,您可能还考虑停止在源事件上传播,以防止采取多种措施。

var drag = d3.behavior.drag();
selection.call(drag);

drag.on("dragend", function() {
  d3.event.sourceEvent.stopPropagation(); // silence other listeners
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章