比较jQuery(javascript?)等源点击的事件

Comparing jQuery (javascript?) Events for Equal Origin Click

本文关键字:事件 jQuery javascript 比较      更新时间:2023-09-26

我正在比较jQuery中的click事件,看看它们是否从同一点击触发。现在我正在使用事件的timeStamp来测试事件是否来自同一点击,虽然这几乎肯定会起作用,但我想知道是否有更好的方法。

例如,如果bodyheader都有一个点击事件,而我点击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
});