Wie laufen getElementsByTagName auf die Kinder eines Elements nur?
Ich bin mit Mühe einen Selektor, um richtig zu arbeiten.
Habe ich diese HTML:
<div.wrapper>
<div.ui-controlgroup-controls>
<form>
<div.ui-btn></div>
</form>
<div.ui-btn></div>
<div.ui-btn></div>
<div.ui-btn></div>
<div.ui-btn></div>
</div>
</div>
und ich bin versucht zu wählen, die div
tags, die Kinder ui-controlgroup-controls
- was bedeutet, ohne was in der form.
Dies ist, was ich versuche:
//el is my div.wrapper element
el.children[0].getElementsByTagName("div");
Allerdings funktioniert dies nicht, da das div in der form landet in der Auswahl.
Frage:
Wie kann ich die Elemente korrekt, wenn ich nicht will, jQuery verwenden?
InformationsquelleAutor frequent | 2013-04-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Weg, dies zu tun ist, Durchlaufen Sie die Liste von Knoten und überprüfen Sie die übergeordnete:
Ist hier eine demonstration dieses Ansatzes: http://jsfiddle.net/WLhY2/
Eine einfachere (wenn auch weniger effiziente) Ansatz ist die Verwendung von
querySelectorAll
zum abrufen der relevanten Knoten über einen Selektor-Ausdruck:InformationsquelleAutor Asad Saeeduddin
Für den browser, unterstützt querySelectorAll:
Für die Browser, die unterstützt die Verwendung von Scheibe auf NodeList (z.B. IE nicht, zumindest nicht IE < 9):
Für die Browser, die nicht unterstützen, weder:
InformationsquelleAutor ZER0
In den meisten Browsern, die Sie tun können:
Aber dies könnte falsch positive Ergebnisse, wenn es mehr tief verschachtelten
".ui-controlgroup-controls"
dass Sie vermeiden wollen.Wenn das der Fall ist, einfach Durchlaufen
.children
und Aufbau einer Sammlung von verschachtelten divs.Wenn es bekannt ist, dass Sie nur eine
ui-controlgroup-controls
element, dann Sie können loszuwerden, die äußere Schleife, und nutzen Sie einfachchildren[0]
.InformationsquelleAutor
:scope
ist eine pseudo-Klasse für das Eltern-element. Keine Unterstützung für IE, aber es ist ein shim.InformationsquelleAutor themefield