2013-07-21 15 views
19

Best way to find out if element is a descendant of another c'è un'altra domanda, molto simile a questo, ma il suo jQuery.Verificare se div è discendente di un altro

quindi, come faccio a farlo in js? Ho div in a, b, c, d nidificato in questo ordine. Inoltre, non sono sicuro se importa, c'è un altro a, b, c ... e un altro. non è solo un singolo elemento. ce ne sono molti per lo stesso id/classe.

quindi voglio vedere se d ha un genitore (non importa quanto profondo sia annidato, a patto che ci sia un genitore in cima è ok) chiamato a.

edit: Inoltre, ho avuto questa idea che ho potuto verificare childNodes di "a" e vedere se "d" è uno di loro, ma couldnt attuarlo. se qualcuno riesce a farlo funzionare, sarà fantastico.

+7

"' Ci sono molti da stesso id'" Non ci dovrebbe essere,' id's deve essere unico all'interno dello stesso DOM. – Teemu

+0

Li ho usati come classi, so che è sbagliato ma è solo un problema di semantica. Posso cambiarli tutti in classi, comunque, in secondi. – purplecircles

+0

la sua jquery? 15char – purplecircles

risposta

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

Grazie. Non conoscevo [parentElement] (http://stackoverflow.com/questions/8685739/difference-between-dom-parentnode-and-parentelement#8685780). +1 – Stano

+2

È necessario utilizzare parentNode anziché parentElement. parentElement è una vecchia cosa di Internet Explorer che non è più supportata. – BrianK

+2

meglio usare 'node.contains' (vedi risposta sotto) – mb21

12

Se si desidera utilizzare puro javascript, utilizzare node.contains.

ad es.

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

Fiddle: http://jsfiddle.net/FlameTrap/pwVPC/

+0

Ma questo richiede che gli elementi siano identificati da 'id', non dalla classe. –

+0

@PedroFerreira sei sicuro? Sembra che funzioni con gli elementi che non hanno alcun ID. –

+0

@L'uomo più sexy della Giamaica: quindi come li identifichi? Per classe ... (getElementsByClassName)? Non funziona –

Problemi correlati