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”是否是其中之一,但无法实现它。如果有人能让它发挥作用,那就太棒了。
答案 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');
}
答案 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上找到更多说明和更多使用示例。