检查div是否是另一个的后代

时间:2013-07-21 15:21:44

标签: javascript

Best way to find out if element is a descendant of another还有另一个问题,这个问题非常类似于它的jquery。

那么,我该怎么做js? 我有div,a,b,c,d按此顺序嵌套。 另外,不确定是否重要,还有另一个,b,c ......和另一个。它不仅仅是一个单一元素。有很多相同的id / class。

所以我想看看d是否有一个父级(无论嵌套有多深,只要它上面有一些父级就可以了),称为。

编辑: 另外,我有这个想法,我可以检查“a”的子节点,看看“d”是否是其中之一,但无法实现它。如果有人能让它发挥作用,那就太棒了。

4 个答案:

答案 0 :(得分:75)

您可以使用node.contains检查节点是否包含其他节点。 https://developer.mozilla.org/en-US/docs/Web/API/Node.contains

答案 1 :(得分:18)

如果您想使用纯JavaScript,请使用node.contains

e.g。

var a = document.getElementById('a');
var d = document.getElementById('d')
if (a.contains(d)) {
    alert('d is a child of a');
}

小提琴:http://jsfiddle.net/FlameTrap/pwVPC/

答案 2 :(得分:10)

// x is the element we are checking
while (x = x.parentNode) { 
    if (x.id == "a") console.log("FOUND");
}

答案 3 :(得分:0)

在这种情况下,方法closest()也可能有用。此方法返回与给定选择器(例如,类或id)匹配的元素的最接近的祖先元素。如果没有这样的元素,则该方法返回null

let d = document.getElementById("d");
// if there is no ancestor with the id 'a', the method returns null and this evaluates to false:
if(d.closest("#a")){
   alert("d is a descendant of an element with the id 'a'");
}

您可以在MDN上找到更多说明和更多使用示例。