我正在尝试提出一个可重用的 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/