我已经设置了一个 jsfiddle 来显示我遇到的问题。http://jsfiddle.net/fy8tK/3/
简单来说,我有一个同时具有单击和双击触发器的子元素。它们都click
使用超时在事件内处理。
父项也有一个双击事件。但是,我使用它来定义它dblclick
。event.stopPropagation()
不起作用,我想知道是不是因为它们是不同的事件类型?
dblclick
基本上,如果我们实际单击子元素,我需要不触发父事件。
我已经设置了一个 jsfiddle 来显示我遇到的问题。http://jsfiddle.net/fy8tK/3/
简单来说,我有一个同时具有单击和双击触发器的子元素。它们都click
使用超时在事件内处理。
父项也有一个双击事件。但是,我使用它来定义它dblclick
。event.stopPropagation()
不起作用,我想知道是不是因为它们是不同的事件类型?
dblclick
基本上,如果我们实际单击子元素,我需要不触发父事件。
$('.parent').bind('dblclick', function (e) {
if (e.target !== 'div.child') {
alert('double click parent');
}
});
$('.child').bind('click', function(e) {
alert('single click child');
});
来自'dblclick' 的 jQuery 文档:不建议将处理程序绑定到同一元素的 click 和 dblclick 事件。触发的事件顺序因浏览器而异,有些在 dblclick 之前接收两个点击事件,而另一些只接收一个。双击灵敏度(被检测为双击的两次单击之间的最长时间)可能因操作系统和浏览器而异,并且通常是用户可配置的。
你也可以参考这个 SO question