2013-07-21 162 views
19

Best way to find out if element is a descendant of another後裔還有另外一個問題,這一個,但它的jQuery的非常相似。檢查DIV是另一個

這樣,我怎麼做,在JS? 我有divs a,b,c,d這個順序嵌套。 也不知道,如果有問題,還有另一個a,b,c ...和另一個。它不只是一個單一的元素。有很多相同的id/class。

,所以我想看看是否d具有父(不管它是多麼深的嵌套,只要有在頂部其確定的某些父)稱爲。

編輯: 另外,我有這個想法,我可以檢查「a」的孩子節點,看看「d」是否是其中之一,但無法實現它。如果有人能得到它的工作,它會很棒。

+7

「'有許多由相同id'」 不應該有,'id's必須是相同的DOM中是唯一的。 – Teemu

+0

我用它們作爲類,我知道它錯了,但它只是一個語義問題。無論如何,我可以用秒改變他們所有的課程。 – purplecircles

+0

它的jQuery? 15char – purplecircles

回答

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

謝謝。不知道的[parentElement(http://stackoverflow.com/questions/8685739/difference-between-dom-parentnode-and-parentelement#8685780)。 +1 – Stano

+2

您應該使用parentNode而不是parentElement。 parentElement是不再受支持的舊Internet Explorer事物。 – BrianK

+2

更好地使用'node.contains'(見下面的回答) – mb21

12

如果你想使用純JavaScript使用node.contains

例如

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/

+0

但是,這對於需要通過「ID」來確定的要素 - 不是一流的。 –

+0

@PedroFerreira你確定嗎?它似乎與沒有任何ID的元素一起工作。 –

+0

@牙買加最性感的男人:那你怎麼識別他們? 按類...(getElementsByClassName)?不起作用。 –