javascript - 使用单个事件处理程序检测元素内部/外部的单击

标签 javascript jquery

假设我的页面中有一个 div。如何通过 JavaScript 或 JQuery 检测用户点击 div 内容或 div 内容之外的内容。请帮助小代码片段。 谢谢。

编辑:正如在下面的一个答案中评论的那样,我只想将一个事件处理程序附加到我的 body ,并且还想知道点击了哪个元素。

最佳答案

这是一个不需要 jquery 使用 Node.contains 的单行代码:

// Get arbitrary element with id "my-element"
var myElementToCheckIfClicksAreInsideOf = document.querySelector('#my-element');
// Listen for click events on body
document.body.addEventListener('click', function (event) {
    if (myElementToCheckIfClicksAreInsideOf.contains(event.target)) {
        console.log('clicked inside');
    } else {
        console.log('clicked outside');
    }
});

如果您想知道检查点击是否在元素本身上的边缘情况,Node.contains 会为元素本身返回 true(例如 element.contains(element) === true) 所以这个片段应该总是有效的。

根据该 MDN 页面,浏览器支持似乎涵盖了几乎所有内容。

关于javascript - 使用单个事件处理程序检测元素内部/外部的单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660633/

相关文章:

javascript - 像 MySQL 一样从 Firebase 检索计数数据

javascript - WordPress:JQuery 未定义导致 iPhone 上无限刷新

javascript - 带有现有选项的 select2 组合框

javascript - 避免在直流图表中隐藏/切割气泡

javascript - HTML5SQL 使用 SELECT 语句从 Web 数据库检索记录

javascript - azurestorage 和 NodeJS 中的 getaddrinfo 错误

javascript - 您应该使用 innerHTML 还是通过一个接一个地创建新元素来将 HTML 添加到 DOM 中?

Javascript计算给定日期是当前日期还是 future 日期?

c# - setRequestHeader 未将请求 header 添加到 wcf 调用

javascript - 选择所有元素