Hier ist das grobe HTML, mit dem ich arbeiten kann:
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li> // this is the single element I need to select
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat current_sub"></li> // this is where I need to start searching
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li>
Ich muss von der durchqueren .current_sub
, die nächstgelegene finden .par_cat
und Sachen damit machen.
.find("li.par_cat")
Gibt die gesamte Ladung von zurück .par_cat
(ich habe ungefähr 30 auf der Seite). Ich muss das einzelne Ziel haben.
Würde mich über Tipps wirklich freuen :)
jquery
html
traversal
tree-traversal
daulex
quelle
quelle
Antworten:
Versuchen:
Getestet mit deinem Markup:
füllt den nächsten Vorgänger
li.par_cat
mit "woohoo".quelle
:first
an einer Liste der zurückgegebenen Elemente gearbeitet wird, die dem ausgewählten Objekt am nächsten beginnt (im Gegensatz zu von oben nach unten relativ zur Seite)?:first
ein CSS-Selektor, der das erste Element im DOM auswählt (z. B.div.red:first
den ersten roten DIV im DOM auswählt ), jQuery den Selektor anders analysiert?Versuchen
quelle
Mit prevUntil () können wir ein entferntes Geschwister bekommen, ohne alles bekommen zu müssen. Ich hatte einen besonders langen Satz, der mit prevAll () zu CPU-intensiv war.
Dies erhält das erste vorhergehende Geschwister, wenn es übereinstimmt, andernfalls erhält es das Geschwister vor dem übereinstimmenden, sodass wir einfach ein weiteres mit prev () sichern, um das gewünschte Element zu erhalten.
quelle
Ich denke, allen Antworten fehlt etwas. Ich bevorzuge so etwas
Spart Ihnen das Hinzufügen nicht: zuerst im Selektor und ist leichter zu lesen und zu verstehen. Die prevUntil () -Methode bietet ebenfalls eine bessere Leistung als die Verwendung von prevAll ()
quelle
Sie können diesem Code folgen:
Daraus können Sie sich ein Bild machen.
quelle