我的JSFiddle带有可调整大小的框。双击文档上的任何位置时,框的颜色将在米色和红色之间切换。

问题在于,有时在调整框大小后释放鼠标左键时,会生成dblclick事件,并且框会变成红色。有时您可以释放鼠标按钮而无需更改框的颜色,但是如果您仅在框中单击一次,它将生成dblclick并更改框的颜色。

通常,一切正常:我调整大小,没有dblclick条目。我必须尝试20次才能得到错误的dblclick事件。

我正在使用Chrome。

如果正在调整大小,我可以通过向dblclick处理程序中添加代码来忽略该条目来部分解决此特定问题。但是,这仍然不能解决dblclick条目,这种情况(很少)在我调整大小时发生,没有得到dblclick,但是当我在框中单击一次时得到了dblclik

但是我在这里寻找的不仅仅是生成JSFiddle的原因,而是生成dblclick的原因。我是否使用dblclick事件不正确?此事件是否存在已知的错误,也许是更好的解决方案?使用鼠标按钮是否会进行某种类型的开关弹跳?

$(function() {
    $("#box").resizable();
    $(document).dblclick(function(e){
        console.log("double-clicked on ",  e.target);
        $("#box").toggleClass("red");
    });
});

最佳答案

它可能与您的硬件有关,我想它也受到系统的“双击延迟”设置的影响。

使用Firefox,如果我反复以微小的闭合 Action 单击并拖动,则会触发dblclick事件,这将是正常现象。但是,我看不到dblclicks在5秒间隔的点击中突然冒出来。

为了帮助您跟踪可能的错误原因,请尝试同时记录mousedownmouseup事件:

$(document).mousedown(function(e){
    console.log("    mousedown on ",  e.target);
});
$(document).mouseup(function(e){
    console.log("    mouseup on ",  e.target);
});

fiddle

10-08 11:46