javascript - 在 JavaScript 或 Jquery 中测试对象的祖先/后代关系

标签 javascript jquery dom

我正在尝试提出一个可重用的 JS 或 jQuery 函数,它允许我测试一个对象是否是另一个对象的 DOM 后代。

我见过一个测试模型

$b.parents('nodename').length>0

当您只需要检查某个元素是否是该名称的任何节点的子元素时,这非常棒。

但是特定节点呢?您无法测试

$b.parents($a).length>0

因为 jQuery 父级将节点名表达式作为过滤器的参数。

作为一点背景知识,我正在尝试测试文档单击事件的目标是否是特定对象的子级。例如,如果 event.target 是 $b 的子级,则返回 true,否则返回 false。但此功能稍后可能会产生其他影响。

谢谢!

最佳答案

a.contains(b)

这是一个纯 JavaScript 解决方案,使用 Node.contains 。该函数是包容性的,a.contains(a) 的计算结果为 true。

IE9 中有一个边缘情况:如果 b 是文本节点,contains 将始终返回 false。

关于javascript - 在 JavaScript 或 Jquery 中测试对象的祖先/后代关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287875/

相关文章:

javascript - 可以在浏览器不阻塞的情况下添加大量 DOM 节点吗?

javascript - Angular 2点击重定向

javascript - AJAX错误ERR_INSUFFICIENT_RESOURCES,如何避免

javascript - jQuery 3.1.1 slideToggle()/toggle() 出现故障

javascript - 隐藏已通过 onkeyup 事件显示的 div(在其外部单击时隐藏)

javascript - 单击功能后清除/重置更改功能

php - 读取 DOM PHP 的部分内容

javascript - 在准确的时间停止视频

javascript - 用 bool 值反转 if 条件

javascript - IE 兼容代码不工作