2017-09-27 2 views
0

Ich versuche zu überprüfen, ob ein DOM-Element bestimmte Elemente enthält. Zum Beispiel, wenn ich dieses p Element:So durchlaufen Sie die inneren Kinder eines DOM-Elements

if ($("#parent").find("U")) { 
 
    alert("found u"); 
 
} 
 
if ($("#parent").find("B")) { 
 
    alert("found b"); 
 
} 
 
if ($("#parent").find("STRIKE")) { 
 
    alert("found strike"); 
 
} 
 
if ($("#parent").find("I")) { 
 
    alert("found i"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p id="parent"> 
 
    <i> 
 
    <u> 
 
     <strike> 
 
     <b>text</b> 
 
     </strike> 
 
    </u> 
 
    </i> 
 
</p>

Aber es ist alarmiert nur das u Element. Ich weiß nicht, warum es nicht die tieferen Kinder des Elements p sucht.

+1

Ein Tipp: Verwenden 'console.log (...)'. Der Vorteil ist, dass Sie nicht mit UI-Pausenmodellen konfrontiert werden, und das Konsolenprotokoll zeigt alle Felder der Objekte an, wo Sie als Warnung "[Objekt-Objekt]" anzeigen. –

+0

Ok ^^ danke für den Tipp –

Antwort

-1

Ich denke, Sie waren dort auf dem richtigen Weg. Ich habe gerade das jquery-Skript-Tag eingefügt und die length-Funktion verwendet, um zu sehen, ob das Element existiert.

Siehe Schnipsel:

$(function() { 
 
    if ($("#parent").find("U").length) { 
 
    alert("found u"); 
 
    } 
 
    if ($("#parent").find("B").length) { 
 
    alert("found b"); 
 
    } 
 
    if ($("#parent").find("STRIKE").length) { 
 
    alert("found strike"); 
 
    } 
 
    if ($("#parent").find("I").length) { 
 
    alert("found i"); 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p id="parent"> 
 
    <i> 
 
    <u> 
 
\t <strike> 
 
\t <b>text</b> 
 
\t </strike> 
 
    </u> 
 
    </i> 
 
</p>

+0

Es hat funktioniert !!! Danke sooo viel –

+0

ähm .. was? Wenn der erste funktionierte, hätte der Rest. Das Wrapping in domready hat keine Auswirkungen, wenn das erste funktioniert. (Sie sollten alle funktionieren, unabhängig davon, ob die Elemente im ursprünglichen Code vorhanden waren oder nicht) –

0

As-ist, Code sollte alert() auf alle dieser Typen, ob sie vorhanden sind oder nicht, da find() immer ein Objekt zurückgibt, und ist somit immer wahr.

Sie sollten stattdessen die length der gefundenen Sammlung überprüfen:

var p = $("#parent") 
 

 
if (p.find("U").length) { 
 
    console.log("found u"); 
 
} 
 
if (p.find("B").length) { 
 
    console.log("found b"); 
 
} 
 
if (p.find("STRIKE").length) { 
 
    console.log("found strike"); 
 
} 
 
if (p.find("I").length) { 
 
    console.log("found i"); 
 
} 
 
if (p.find("div").length) { 
 
    console.log("found div"); // shouldn't see this 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p id="parent"> 
 
    <i> 
 
    <u> 
 
     <strike> 
 
     <b>text</b> 
 
     </strike> 
 
    </u> 
 
    </i> 
 
</p>

Verwandte Themen