我正在比较 jQuery 中的 click
事件,看看它们是否是通过同一次单击触发的。现在,我正在使用事件的 timeStamp
来测试事件是否来自同一次点击,虽然这几乎肯定会起作用,但我想知道是否有更好的方法。
例如,如果body
和header
都有点击事件,我点击header
,它会冒泡到正文
。测试触发的两个事件是否来自同一次点击的最佳方法是什么?
最佳答案
在纯 JavaScript 中,同一个事件对象将到达两个事件监听器,因此 you can compare them 。另一方面,jQuery 会将原始事件对象包装到每个监听器的新规范化对象中,因此您必须 check their .originalEvent
property相反。
无论如何,我从来不需要检查这一点。通常,您只想知道单击的元素是否与您绑定(bind)单击的元素相同:
document.body.addEventListener('click', function(e) {
if(e.target === this) {
// the click happened on the body itself
} else {
// the click bubbled up
}
}, false);
jQuery 提供了一个很好的事件委托(delegate)机制,因此您甚至不需要 if
:
$('body').on('click', '.someSelector', function(e) {
// This will only fire if an element with class 'someSelector'
// was clicked
});
关于javascript - 比较 jQuery (javascript?) 事件的同源点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18708788/