2016-03-09 19 views
5

Mi scuso se questa è una domanda facile! Sono piuttosto nuovo di javascript.Verifica se l'elemento ha un nodo figlio per nome ID

Sto provando a verificare se un div ha un elemento figlio specifico (lo chiamerò "child2"). So di .hasChildNodes() ma, per quanto ne so, ti consente di sapere se esistono nodi figli. Ho provato .contains in questo modo:

if (parentDiv.contains(child2) == false) { 

Ma anche se il parentDiv fa contengono child2, restituisce ancora false. Sembra una cosa così semplice da fare e ho cercato di cercare in giro, ma non ho avuto fortuna in puro js. Grazie!

risposta

8

È possibile utilizzare querySelector():

var hasChild = parentDiv.querySelector("#child2") != null; 

Il metodo querySelector() permette di cercare la sottostruttura sotto l'elemento di partenza utilizzando la stringa specificata selettore CSS. Se l'elemento viene trovato, viene restituito il nodo DOM.

+0

Così "child2" viene aggiunto in modo dinamico del carico, se i dati sono stati ricevuti dal server. In caso contrario, non viene aggiunto. Quando faccio qualcosa all'interno del sito, voglio aggiungerlo a "child2" e creare un altro "child2". Anche se esiste dopo aver caricato i dati, continua a dirmi che non esiste –

+0

@KodyR. Quando guardi l'ispettore DOM dalla console degli sviluppatori del tuo browser, puoi vedere l'elemento ma il codice sopra non funziona? Penso che sarebbe estremamente strano. Quanto sei sicuro che 'parentDiv' si riferisca al nodo corretto? – Pointy

+0

Ho appena guardato e non è presente nel codice ma è sicuramente sul mio schermo. Molto strano –

1

È necessario eseguire questa operazione per rendere effettiva l'istruzione if.

var parentDiv = document.getElementById("parentDiv"); 
 
var childDiv = document.getElementById("childDiv"); 
 

 
if (parentDiv.contains(childDiv)) { 
 
    alert("yes"); 
 
} 
 
<div id="parentDiv"> 
 
    <div id="childDiv"> 
 
    </div> 
 
</div>

Problemi correlati