我正在处理d3的拖放功能,我遵循了链接
http://bl.ocks.org/robschmuecker/7880033
对于d3拖放功能,它按照d3 v3版本示例完美地工作,但我想要执行d3 v4,因此我查看了根据d3主更改进行的主更改。
除了鼠标点击和双击事件之外,我把所有的更改都转换成了正常工作,所以我在d3论坛上讨论了这个问题,并找到了一些解决方案。
但这仍然是公开的还是封闭的,你能知道如何解决这个问题吗?让我知道,分享links.Thanks。
var nodeEnter = node.enter().append('g').call(d3.drag()
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended)).on("click",collapse)
.on("mouseover", overCircle)
.on("mouseout", outCircle)
.attr('class', 'node')
.attr('cursor', 'pointer')
.attr("transform", function (d) {
return "translate(" + source.y0 + "," + source.x0 + ")";
});对于单击事件,我需要展开并折叠到子node.for --这个场景中,单击没有触发,但是如果没有拖放事件单击,则可以正常工作。
发布于 2018-01-03 09:26:06
D3的drag()行为拦截点击事件,并测量鼠标在鼠标按钮下降和鼠标按钮上升之间移动了多少。如果鼠标指针移动了两个事件之间的距离,那么它将阻止click事件的触发。因此,一个非常快,轻点击一个物体一般会工作,但一个更重,较慢的一个将不会。
单击为单击的距离为零像素,但幸运的是,您可以使用clickDistance函数更改这一点。尝试:
node.enter().append('g').call(d3.drag()
.clickDistance(1)
.on("start", [etc.]然后看看如何调整给定的值(1可能完成它,您可能希望或多或少)为您工作。
https://stackoverflow.com/questions/48071893
复制相似问题