Zum Beispiel gibt es 10 LIs in einem UL, und das dritte Li gibt einen besonderen Stil (wie die Farbe ist rot und die anderen sind schwarz). Ich möchte die Farbe aller anderen LIs - ohne rote Lis - auf Rot einstellen. Zu diesem Zeitpunkt müssen Sie alle Bruderknoten von Red Lis erhalten.
Brüder sind diejenigen, die genauso sind wie Sie, weder der vorherige noch der nächste, und es kann (Bruder) älter als Sie oder jünger sind als Sie. In ähnlicher Weise werden Bruderknoten verwendet. Hier ist ein regelmäßiger Weg, um Bruderknoten zu erhalten.
Der Code ist wie folgt
Funktionsiblings (elm) {var a = []; var p = elmm.Parentnode.Children; für (var i = 0, pl = P.Length; i <pl; i ++) {if (p [i]! == elm) a.push (p [i]);} return a;}Idee: Holen Sie sich zuerst alle Kinder des übergeordneten Knotens dieses Elements. Da alle Kinder auch dieses Element selbst enthalten, müssen Sie sich aus dem Ergebnis entfernen.
Es gibt eine andere Methode, die seltsam aussieht, nämlich den Quellcode der Bruderknoten in JQuery:
Der Code ist wie folgt
Funktionsibling (Elem) {var r = []; var n = elem.parentnode.firstchild; for (; n; n; n = n.nextSsibling) {if (n.nodetype === 1 && n! == Elem) {r.push (n);} returnIdee: Finden Sie zuerst den ersten untergeordneten Knoten des übergeordneten Knotens dieses Elements und schleifen Sie dann den nächsten Bruderknoten dieses Knotens, bis die Suche abgeschlossen ist.
Ich frage mich, warum JQuery diese Methode verwendet. Ist diese Methode effizienter als die erste Methode?
Nach meinem vorläufigen Test - mehr als 1.500 Li, haben die beiden oben genannten Methoden fast keinen Unterschied in der Effizienz und sind beide innerhalb weniger Millisekunden erfolgreich. Die Testumgebung ist Chrom und Firefox.
Wenn Sie alle Geschwisterknoten erhalten müssen, können Sie eine der oben genannten Methoden verwenden.
Natürlich werde ich die beiden oben genannten Methoden in der Zukunft überprüfen. Wenn es Unterschiede gibt, werde ich sie aktualisieren.
Jquerys Suchmethode für Eltern, Sohn und Bruderknoten
JQuery.Parent (Expr.) Finden Sie den übergeordneten Knoten.
JQuery.Parents (EXPR), ähnlich wie jQuery.Parents (EXPR), aber es sucht nach allen Vorfahren, die nicht auf Elternelemente beschränkt sind
JQuery.Children (expr.). Gibt alle Kinderknoten zurück. Diese Methode gibt nur direkte Kinderknoten zurück und gibt nicht alle Kinderknoten zurück.
jQuery.Contents () gibt alle folgenden Inhalte zurück, einschließlich Knoten und Text. Der Unterschied zwischen dieser Methode und den Kindern () besteht darin, dass auch der leere Text auch als als verwendet wird
JQuery -Objekt kehrt zurück, Kinder () gibt nur Knoten zurück
Jquery.Prev () gibt den vorherigen Geschwisterknoten zurück, nicht alle Geschwisterknoten
jQuery.prevall () geben Sie alle früheren Geschwisterknoten zurück
JQuery.Next () gibt den nächsten Geschwisterknoten zurück, nicht alle Geschwisterknoten
JQuery.Nextall () geben Sie alle nachfolgenden Geschwisterknoten zurück
Jquery.Siblings () gibt den Geschwisterknoten unabhängig von vorne und hinten zurück
JQuery.find (EXPR) unterscheidet sich völlig von jQuery.filter (EXPR). Jquery.filter () soll einen Teil der ersten Jquery -Objektsammlung herausfiltern, während jQuery.find ()
Das Rückgabeergebnis hat keinen Inhalt in der ersten Sammlung, wie z.
Der obige Artikel JS, um alle Bruderknoten der Elemente zu erhalten, ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.