Obwohl der :lt(20)Ansatz viel sauberer aussieht, ist die Verwendung von Slice viel effizienter, wenn Sie zunächst eine große Ergebnismenge haben. Leider durchläuft jQuery bei der Auswertung von ": lt" und anderen Positionsselektoren den gesamten Satz , auch wenn es nur das erste Element erhält. Ich habe mehr darüber in meinem Blog hier geschrieben: spadgos.com/?p=51
nickf
1
Vielen Dank, eine Nebenanforderung meiner Anfrage betraf Auftritte, daher ist dies die richtige Antwort für mich. Vielen Dank an die anderen für den Hinweis auf den: lt-Selektor.
Omiod
3
Informativer Kommentar von @nickf, aber der Blog-Link und der Grafik-Link scheinen nicht zu funktionieren
Fractalf
1
Kann jetzt leider nicht bearbeitet werden - im Grunde war die Verwendung von Slice viel schneller.
Nickf
92
Verwenden Sie den Pseudo-Selektor:
$("a:lt(n)")
Dies entspricht den Elementen vor dem n-ten (das n-te Element ausgeschlossen). Die Nummerierung beginnt bei 0.
Zusätzliche Hinweise:
Da: lt () eine jQuery-Erweiterung ist und nicht Teil der CSS-Spezifikation ist, können Abfragen mit: lt () die Leistungssteigerung der nativen DOM-Methode querySelectorAll () nicht nutzen. Verwenden Sie stattdessen $ ("your-pure-css-selector"). Slice (0, index), um eine bessere Leistung in modernen Browsern zu erzielen.
Verwenden Sie es also $("selector").slice(from, to)für bessere Leistungen.
:lt(20)
Ansatz viel sauberer aussieht, ist die Verwendung von Slice viel effizienter, wenn Sie zunächst eine große Ergebnismenge haben. Leider durchläuft jQuery bei der Auswertung von ": lt" und anderen Positionsselektoren den gesamten Satz , auch wenn es nur das erste Element erhält. Ich habe mehr darüber in meinem Blog hier geschrieben: spadgos.com/?p=51Verwenden Sie den Pseudo-Selektor:
Dies entspricht den Elementen vor dem n-ten (das n-te Element ausgeschlossen). Die Nummerierung beginnt bei 0.
quelle
Ich habe diesen Hinweis am Ende der lt () - Dokumentation gefunden :
Verwenden Sie es also
$("selector").slice(from, to)
für bessere Leistungen.quelle
Probieren Sie den folgenden Selektor aus: http://docs.jquery.com/Selectors/lt#index
quelle
.slice () ist nicht immer besser. In meinem Fall ist mit jQuery 1.7 in Chrome 36 .slice (0, 20) mit folgendem Fehler fehlgeschlagen:
RangeError: Maximale Aufrufstapelgröße überschritten
Ich fand, dass: lt (20) in diesem Fall fehlerfrei funktionierte. Ich hatte wahrscheinlich Zehntausende von passenden Elementen.
quelle
JQuery-Dokumentation
quelle