如何在Javascript中检查一个元素是否包含在另一个元素中

发布于 2021-02-02 17:20:20

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

if (element1.hasDescendant(element2))

要么

if (element2.hasParent(element1))

如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。

关注者
0
被浏览
127
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    更新: 现在有一种本地方法可以实现此目的。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;
    }
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看