【发布时间】:2018-12-05 18:14:07
【问题描述】:
我有一个覆盖 div 和一个按钮,下面有一个双击事件。单击覆盖时,它应该被隐藏。如果我双击覆盖,将鼠标悬停在按钮上,则会在按钮中触发双击事件。这是正确的行为吗?我做错什么了吗?是否有任何解决方法可以防止按钮触发?
代码示例:
var $container = $('#absolute-container');
var $button = $('#button');
// On container click, hide the container
$container.on('click', function (e) {
e.stopPropagation();
e.preventDefault();
$container.hide();
});
$button.on('dblclick', function () {
alert('double click');
});
这是一个带有示例的 jsfiddle: https://jsfiddle.net/o0qsbd43/18/
谢谢
【问题讨论】:
-
有趣的问题。这可能被认为是浏览器错误,但我还没有阅读有关当重叠元素受到初始事件影响时应如何处理单击/双击事件的规范。
-
为什么要使用 dblclick 事件?为什么不只听按钮上的老式点击?
-
我查了spec。它指出应该在
...the primary button of a pointing device is clicked twice over an element时调度 dblclick 事件,这似乎是您看到的行为的原因,因为指针在两次单击的按钮上 over。 但是,规范还指出:the event target MUST be the same between mousedown, mouseup, and dblclick不是这里的情况,因此我认为这是一个错误。
标签: javascript jquery double-click