在我的Javascript应用程序中,我遇到了事件冒泡的问题,也就是说,我不想在鼠标悬停在元素上后触发mouseleave
(已经实现了拖动行为,因此它会移动,鼠标会离开它)。
我该怎么做?
编辑
我使用d3.js
以以下方式捕获事件:
d3.selectAll("circle")
.on("mouseover", function(d,i){
...
}
.on("mouseup", function(d,i){
...
}
.on("mouseleave", function(d,i){
...
}
使用类似的布尔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
});
我已经用类似于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 )
{
...
}
})
编辑
还有更优雅的方法吗?