Aus bestimmten Leistungsgründen versuche ich, nur Geschwisterknoten des ausgewählten Knotens auszuwählen.
Beispielsweise,
<div id="outer">
<div id="inner1"></div>
<div id="inner2"></div>
<div id="inner3"></div>
<div id="inner4"></div>
</div>
Wenn ich inner1 node ausgewählt habe, gibt es eine Möglichkeit für mich, auf seine Geschwister, inner2-4
Knoten , zuzugreifen ?
javascript
dom
siblings
Codingbear
quelle
quelle
Dadurch wird das Geschwister sofort danach zurückgegeben, oder null, es sind keine Geschwister mehr verfügbar. Ebenso können Sie verwenden
previousSibling
.[Bearbeiten] Beim zweiten Gedanken gibt dies nicht das nächste
div
Tag, sondern das Leerzeichen nach dem Knoten. Besser scheint es zu seinEs gibt auch eine
previousElementSibling
.quelle
Schnell:
https://codepen.io/anon/pen/LLoyrP?editors=1011
Holen Sie sich die untergeordneten Elemente der Eltern als Array und filtern Sie dieses Element heraus.
Bearbeiten:
Und um Textknoten herauszufiltern (Danke pmrotule ):
quelle
[ ...n.parentNode.children ].filter(c => c.nodeType == 1 && c != n)
Ab 2017:
unkomplizierte Antwort:
element.nextElementSibling
Für das richtige Element Geschwister. auch du hastelement.previousElementSibling
für vorherigesVon hier aus ist es ziemlich einfach, alle nächsten Geschwister zu bekommen
quelle
next
oderprevious
. In diesem Fall hilft es nicht viel, genau vorwärts oder rückwärts zu gehen.Haben Sie die Methode "Geschwister" in jQuery überprüft?
Der n.nodeType == 1 prüft, ob das Element ein HTML-Knoten ist, und n! == schließt das aktuelle Element aus.
Ich denke, Sie können die gleiche Funktion verwenden, der gesamte Code scheint Vanille-Javascript zu sein.
quelle
Es gibt verschiedene Möglichkeiten, dies zu tun.
Eine der folgenden Möglichkeiten sollte ausreichen.
Zu Ihrer Information: Die jQuery-Codebasis ist eine großartige Ressource für die Beobachtung von Javascript der Klasse A.
Hier ist ein hervorragendes Tool, das die jQuery-Codebasis auf sehr optimierte Weise anzeigt. http://james.padolsey.com/jquery/
quelle
So könnten Sie vorherige, nächste und alle Geschwister (beide Seiten) bekommen:
quelle
Verwenden Sie document.querySelectorAll () und Loops und Iteration
quelle
jQuery
Native - neueste Version, Edge13 +
Native (Alternative) - neueste Version, Edge13 +
Native - IE10 +
quelle
quelle
1) Fügen Sie dem Zielelement eine ausgewählte Klasse hinzu.
2) Suchen Sie alle untergeordneten Elemente des übergeordneten Elements mit Ausnahme des Zielelements.
3) Entfernen Sie die Klasse aus dem Zielelement
quelle
Die folgende Funktion gibt ein Array zurück, das alle Geschwister des angegebenen Elements enthält.
Übergeben Sie einfach das ausgewählte Element
getSiblings()
als einzigen Parameter an die Funktion.quelle
quelle