Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止在I';我在做拖拉?_Javascript_D3.js - Fatal编程技术网

Javascript 如何防止在I';我在做拖拉?

Javascript 如何防止在I';我在做拖拉?,javascript,d3.js,Javascript,D3.js,我有一个地图,在每个路径中我都有一个点击事件,只有当我点击路径时才会激活,但当拖动事件结束时,它会被激活。如何使单击事件仅在单击路径时激活 这是我的代码: g.selectAll(".mpio") .data(topojson.feature(co, co.objects.mpios).features) .enter().append("path") .attr("class", function(d) { ret

我有一个地图,在每个路径中我都有一个点击事件,只有当我点击路径时才会激活,但当拖动事件结束时,它会被激活。如何使单击事件仅在单击路径时激活

这是我的代码:

      g.selectAll(".mpio")
        .data(topojson.feature(co, co.objects.mpios).features)
        .enter().append("path")
        .attr("class", function(d) {
          return "mpio " + "_" + d.id + " " + d.properties.dpt
        })
        .attr("d", path)
        .on("click",function(){
        alert("click")
        })
    })
这是我的原始代码(原始问题)

退房并进行更多控制

单击
是这两个事件的完全完成(鼠标向下,然后鼠标向上)。我认为您正在寻找鼠标向下移动。

从中,如果(d3.event.defaultPrevented)返回,您可以添加
编码到单击事件中,以防止在发生缩放时发生该事件

.on("click",function(){
  if (d3.event.defaultPrevented) return;
    alert("CLICKED!!")
  })

,来自您的小提琴。

这是一个评论,但不是答案。谢谢。。但奇怪的是,我知道它是有效的,但在我的真实示例中,当我拖动或单击时,什么都不会发生……如果你能将代码发布到不起作用的地方,那就太好了。如果我们不能正确地重现您的问题,我们就不能正确地回答您的问题。我看不出有任何理由说明这在更新的代码中不起作用。我也不知道。。。我甚至删除了所有内容并发出警报(“单击”),但没有任何效果。如果(d3.event.defaultPrevented)返回false,则始终返回truetry put
if
.on("click",function(){
  if (d3.event.defaultPrevented) return;
    alert("CLICKED!!")
  })