javascript - 使用 length 属性获取事件目标时的困惑

标签 javascript jquery dom

所以,我正在经历这个article关于使用停止事件传播时的危险。在描述除了使用 stopPropagation 之外还可以做什么的部分中,显示了以下代码:

$(document).on('click', function(event) {
  if (!$(event.target).closest('#menucontainer').length) {
    // Hide the menus.
  }
});

我在这里不明白的是为什么在语句中使用 length 属性? closest还不足以判断被点击的元素是否是事件目标吗?

最佳答案

因为.closest()总是返回一个真实的 jQuery 对象,因此如果只检查 .closest 返回的值,它永远不会满足条件。

相反,jQuery 对象的 length 属性将返回它所引用的 dom 元素的数量,因此要检查是否在 e.target 的祖先树中找到最接近的目标元素,我们可以检查长度属性。如果没有找到匹配的元素,length 将为 0,否则它将包含找到的引用数

关于javascript - 使用 length 属性获取事件目标时的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32842931/

相关文章:

javascript - 映射2对象并根据值创建对象

javascript - 通过 Javascript 或 PHP 将逗号分隔的数据从列转换为分隔行

复选框的 Javascript OnChange

html - 我应该手动将自定义 knockout 元素注册到 DOM 吗?

jQuery:加载外部 HTML 内容;访问插入的元素失败

此特定实例中的 javascript 变量范围

javascript - 没有实际文本触发的淡入/淡出图像翻转

javascript - JavaScript 中奇怪的计时行为

jquery - 在一个 fancybox 弹出窗口中使用 vimeo 视频和图像

jquery - 如何删除选项并保留原始选项的副本?