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

标签 javascript jquery

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

例如,如果bodyheader都有点击事件,我点击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/

相关文章:

javascript - Soundcloud API/SoundManager2 SetPosition 在播放轨道之前不起作用

javascript - HTML5 输入单选 JavaScript 验证如何工作?

javascript - jQuery - 从父列表中删除选定的选项

javascript - 使 div 元素向右移动

Jquery 将月份添加到所选日期

javascript - 替代表格显示数据?

javascript - HTML - 通过按同一行内的按钮获取行 ID

javascript - 从数组中选择所有键为 : name is equal something 的内容

asp.net-mvc-3 - JQuery Ajax 调用 PDF 文件下载

javascript - jQuery 在拖动时触发 mouseup