Вибір перших "n" елементів за допомогою jQuery


217

За допомогою Jquery мені потрібно вибрати лише перші "n" елементи зі сторінки, наприклад перші 20 посилань, замість того, щоб вибирати всі зі звичайними

$("a")

Звучить просто, але в посібнику jQuery немає свідчень про щось подібне.

Відповіді:


378

Напевно, ви хочете прочитати на фрагменті . Ваш код буде виглядати приблизно так:

$("a").slice(0,20)

65
Хоча :lt(20)підхід виглядає набагато чистішим, використання фрагмента набагато ефективніше, якщо у вас є великий результат, з якого слід почати. На жаль, при оцінці ": lt" та інших позиційних селекторів jQuery пробирає весь набір , навіть якщо це лише отримання першого елемента. Я більше про це писав у своєму блозі тут: spadgos.com/?p=51
nickf

1
Дякую, бічна вимога мого прохання стосувалася виступів, тому це правильна відповідь для мене. Дякуємо іншим, що вказали на: селектор lt.
Оміод

3
Інформаційний коментар @nickf, але посилання на блог та посилання на графік, схоже, не працюють
Fractalf

1
Не можу редагувати зараз вибачте - в основному використання фрагмента пройшло набагато швидше.
nickf

92

Використовуйте псевдоселектор lt:

$("a:lt(n)")

Це відповідає елементам до n-го (виключається n-й елемент). Нумерація починається від 0.


13
За словами jQuery Docs , .slice швидше в сучасних браузерах.
Блейз

1
Мені подобається використання стилю jQuery, він більш елегантний, ніж ланцюжок.
Федір РИХТИК

22

Я знайшов цю замітку в кінці lt () документів :

Додаткові примітки:
Оскільки: lt () є розширенням jQuery і не є частиною специфікації CSS, запити, що використовують: lt (), не можуть скористатися підвищенням продуктивності, що надається нативним методом DOM querySelectorAll (). Для кращої роботи в сучасних браузерах використовуйте замість $ ("your-pure-css-selector") .slice (0, index).

Тож використовуйте $("selector").slice(from, to)для кращих виступів.



7

.slice () не завжди кращий. У моєму випадку, з jQuery 1.7 в Chrome 36, .slice (0, 20) не вдалося помилитися:

RangeError: Максимальний розмір стека викликів перевищено

Я виявив, що: lt (20) в цьому випадку працював без помилок. У мене, мабуть, було десятки тисяч відповідних елементів.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.