Chociaż :lt(20)podejście wygląda na znacznie czystsze, stosowanie wycinania jest o wiele bardziej wydajne, jeśli masz duży zestaw wyników na początek. Niestety, podczas oceny „: lt” i innych selektorów pozycyjnych, jQuery zapętla cały zestaw , nawet jeśli otrzymuje tylko pierwszy element. Więcej o tym napisałem na moim blogu tutaj: spadgos.com/?p=51
nickf
1
Dziękuję, poboczny wymóg mojej prośby dotyczył występów, więc to dla mnie odpowiednia odpowiedź. Dziękujemy innym za wskazanie selektora: lt.
Omiod
3
Komentarz informacyjny @nickf, ale link do blogu i link do wykresu nie wydają się działać
Fractalf,
1
Nie można teraz edytować przepraszam - w zasadzie użycie wycinka było znacznie szybsze.
nickf
92
Użyj lt pseudo selektora:
$("a:lt(n)")
To dopasowuje elementy przed n-tym (z wyłączeniem n-tego elementu). Numeracja zaczyna się od 0.
Lubię używać stylu jQuery, jest bardziej elegancki niż łańcuchowy.
Fedir RYKHTIK
22
Znalazłem tę notatkę na końcu dokumentacji lt () :
Dodatkowe uwagi:
Ponieważ: lt () jest rozszerzeniem jQuery i nie jest częścią specyfikacji CSS, zapytania wykorzystujące: lt () nie mogą skorzystać ze zwiększenia wydajności zapewnianego przez natywną metodę DOM querySelectorAll (). Aby uzyskać lepszą wydajność w nowoczesnych przeglądarkach, zamiast tego użyj $ („twój-czysty-css-selektor”). Slice (0, indeks).
Więc użyj $("selector").slice(from, to)dla lepszych wyników.
:lt(20)
podejście wygląda na znacznie czystsze, stosowanie wycinania jest o wiele bardziej wydajne, jeśli masz duży zestaw wyników na początek. Niestety, podczas oceny „: lt” i innych selektorów pozycyjnych, jQuery zapętla cały zestaw , nawet jeśli otrzymuje tylko pierwszy element. Więcej o tym napisałem na moim blogu tutaj: spadgos.com/?p=51Użyj lt pseudo selektora:
To dopasowuje elementy przed n-tym (z wyłączeniem n-tego elementu). Numeracja zaczyna się od 0.
źródło
Znalazłem tę notatkę na końcu dokumentacji lt () :
Więc użyj
$("selector").slice(from, to)
dla lepszych wyników.źródło
Wypróbuj: selektor: http://docs.jquery.com/Selectors/lt#index
źródło
.slice () nie zawsze jest lepszy. W moim przypadku, z jQuery 1.7 w Chrome 36, .slice (0, 20) nie powiodło się z błędem:
RangeError: Przekroczono maksymalny rozmiar stosu wywołań
Odkryłem, że: lt (20) działało bezbłędnie w tym przypadku. Miałem prawdopodobnie dziesiątki tysięcy pasujących elementów.
źródło
Dokumentacja JQuery
źródło