Javascript 如何防止鼠标点击后触发鼠标删除?
在我的Javascript应用程序中,我遇到了事件冒泡的问题,也就是说,我不希望在鼠标移动到元素上后触发Javascript 如何防止鼠标点击后触发鼠标删除?,javascript,d3.js,event-handling,dom-events,event-bubbling,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){ ...
mouseleave
(已经实现了拖动行为,因此它会移动,鼠标会离开)
我该怎么做
编辑
我使用d3.js
以以下方式捕获事件:
d3.selectAll("circle")
.on("mouseover", function(d,i){
...
}
.on("mouseup", function(d,i){
...
}
.on("mouseleave", function(d,i){
...
}
让一个像这样的布尔
检查
变量怎么样
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
});
让一个像这样的布尔
检查
变量怎么样
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的advice的布尔检查方法解决了这个问题:
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 )
{
...
}
})
编辑
还有更优雅的方法吗?我用类似于user1671639的advice和boolean check的方法解决了这个问题:
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 )
{
...
}
})
编辑
有没有更优雅的方法可以做到这一点?您是否使用了任何库,您是否有正在使用的代码示例?了解这些都很有帮助。
var dragging=false;函数mouseLeave(e){if(dragging)return;..}
?@ars265我在编辑中添加了此信息。您是否使用任何库,您是否有正在使用的代码示例?了解这些都很有帮助。var dragging=false;函数mouseLeave(e){if(drawing)return;..}
?@ars265我在编辑中添加了此信息。