我正在比较click
jQuery 中的事件,看看它们是否从同一次点击中触发。现在我正在使用事件timeStamp
来测试事件是否来自同一次点击,虽然这几乎肯定会起作用,但我想知道是否有更好的方法。
例如,如果body
和header
都有一个点击事件,而我点击header
,它会冒泡到body
. 测试触发的两个事件是否来自同一次点击的最佳方法是什么?
我正在比较click
jQuery 中的事件,看看它们是否从同一次点击中触发。现在我正在使用事件timeStamp
来测试事件是否来自同一次点击,虽然这几乎肯定会起作用,但我想知道是否有更好的方法。
例如,如果body
和header
都有一个点击事件,而我点击header
,它会冒泡到body
. 测试触发的两个事件是否来自同一次点击的最佳方法是什么?
在纯 JavaScript 中,同一个事件对象将到达两个事件侦听器,因此您可以比较它们。另一方面,jQuery 会将原始事件对象包装到每个侦听器的新规范化对象中,因此您必须改为检查它们的.originalEvent
属性。
无论如何,我从来不需要检查。通常,您只想知道单击的元素是否与您绑定单击的元素相同:
document.body.addEventListener('click', function(e) {
if(e.target === this) {
// the click happened on the body itself
} else {
// the click bubbled up
}
}, false);
jQuery 为事件委托提供了一个很好的机制,所以你甚至不需要if
:
$('body').on('click', '.someSelector', function(e) {
// This will only fire if an element with class 'someSelector'
// was clicked
});