javascript - 如何防止mouseup后触发mouseleave?

标签 javascript d3.js event-handling dom-events event-bubbling

在我的Javascript应用程序中,我遇到了事件冒泡问题,即我不想在鼠标放在元素上后触发mouseleave(已经实现了拖动行为,因此它移动并且鼠标离开它)。

我怎样才能做到这一点?

编辑

我正在使用d3.js通过以下方式捕获事件:

d3.selectAll("circle")
        .on("mouseover", function(d,i){
        ...
        }
        .on("mouseup", function(d,i){
        ...
        }
        .on("mouseleave", function(d,i){
        ...
        }

最佳答案

拥有一个像这样的 bool 检查变量怎么样

var preventBubble = true;
d3.selectAll("circle")
        .on("mouseover", function(d,i){
        ...
        }
        .on("mouseup", function(d,i){
        preventBubble = false;
        ....
        }
        .on("mouseleave", function(d,i){

        if(preventBubble) {         
        ...
          }
        }

我更愿意使用带有回调的.hover(),而不是使用mouseovermouseleave

d3.selectAll("circle").on("hover", function(d,i){
    //To Dos
  }, function(d,i) {
    // callback To Dos
});

关于javascript - 如何防止mouseup后触发mouseleave?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594112/

相关文章:

d3.js - 带有数组或 JSON 数据的 D3 堆积图

event-handling - Node.js 重复监听器问题

javascript - 分组折线图,如何以重复模式绘制线条

Javascript上传文件夹,通过压缩与上传文件夹相同的文件夹结构

javascript - 从 request/cheerio 中提取数据

javascript - 检查特定输入后如何使标签更改属性?

D3.js解析错误-正交 map 投影的旋转

c# - 在 C# 中声明事件的最佳实践

javascript - 限制javascript中的事件传播

javascript - 尝试将 CSS 注入(inject)网页而不是将 CSS 注入(inject)自身的扩展