在我的javascript应用程序中,我遇到了事件冒泡的问题,即我不希望在鼠标上移动元素之后触发mouseleave(已经实现了拖动行为,因此它移动并且鼠标离开它)。
我该怎么做?
修改
我正在使用d3.js
以下列方式捕获事件:
d3.selectAll("circle")
.on("mouseover", function(d,i){
...
}
.on("mouseup", function(d,i){
...
}
.on("mouseleave", function(d,i){
...
}
答案 0 :(得分:1)
如何拥有布尔check
变量
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) {
...
}
}
我宁愿使用 mouseover
进行回调
mouseleave
和.hover()
。
d3.selectAll("circle").on("hover", function(d,i){
//To Dos
}, function(d,i) {
// callback To Dos
});
答案 1 :(得分:0)
我已经用类似于user1671639的布局检查的方式解决了它:
var been_in_mouseup = false;
.on("mousedown", function(d){
...
been_in_mouseup = false;
})
.on("mouseup", function(d,i){
...
been_in_mouseup = true;
})
.on("mouseleave", function(d, i){
...
if(false == been_in_mouseup )
{
...
}
})
修改强>
还有更优雅的方法吗?