1

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

例如,如果bodyheader都有一个点击事件,而我点击header,它会冒泡到body. 测试触发的两个事件是否来自同一次点击的最佳方法是什么?

4

1 回答 1

1

在纯 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
});
于 2013-09-10T00:16:43.750 回答