小编典典

如果一个元素包含在另一个元素中,如何检查Javascript

all

如何检查一个 DOM 元素是否是另一个 DOM 元素的子元素?有没有内置的方法呢?例如,类似:

if (element1.hasDescendant(element2))

或者

if (element2.hasParent(element1))

如果没有,那么任何想法如何做到这一点?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父母之下许多级别。


阅读 81

收藏
2022-05-16

共1个答案

小编典典

更新: 现在有一种本地方法可以实现这一点。Node.contains(). 在评论和下面的答案中也提到了。

老答案:

使用该parentNode属性应该可以工作。从跨浏览器的角度来看,它也非常安全。如果已知关系是一级深,您可以简单地检查它:

if (element2.parentNode == element1) { ... }

如果子级可以任意嵌套在父级内部,您可以使用类似于以下的函数来测试关系:

function isDescendant(parent, child) {
     var node = child.parentNode;
     while (node != null) {
         if (node == parent) {
             return true;
         }
         node = node.parentNode;
     }
     return false;
}
2022-05-16