所以,我正在经历这个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/