繁体   English   中英

D3:d3.behavior.drag

[英]D3: d3.behavior.drag

我正在尝试这个例子,我将d3.behavior.drag应用于该函数

var drag = d3.behavior.drag()
        .on("drag", function(d,i) {
            d.x += d3.event.dx
            d.y += d3.event.dy
            d3.select(this).attr("transform", function(d,i){
                return "translate(" + [ d.x,d.y ] + ")"
            })
        });

请看这里的例子。

我的问题是在拖动svg之后。

当我点击一个元素时,缩放不是很好。

例如,根消失了......

我该如何解决这种情况?

谢谢,卡洛斯。

问题是,当您尝试拖动元素时,也会触发click事件,并且两个事件处理程序都将被执行。

如果单击事件被抑制(即拖动时),则需要忽略它。

修改您的点击事件处理程序为

function click(d) {
    // Ignore the click event if it was suppressed
    if (d3.event.defaultPrevented){
     return;
    }
    path.transition()
      .duration(750)
      .attrTween("d", arcTween(d));
    };

在你的情况下,可以拖动和点击一个元素,除了prashant的答案,你还要按下面的方式抑制点击拖动:

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

有关示例,请参见http://bl.ocks.org/mbostock/6123708 :-)

使用这个,d3.event.sourceEvent.stopPropagation();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM