Хотя :lt(20)подход выглядит намного чище, использование слайса намного эффективнее, если у вас большой набор результатов для начала. К сожалению, при оценке ": lt" и других позиционных селекторов jQuery проходит по всему набору , даже если он просто получает первый элемент. Я написал больше об этом в своем блоге здесь: spadgos.com/?p=51
nickf
1
Спасибо, побочное требование моего запроса было о выступлениях, так что это правильный ответ для меня. Спасибо другим за указание на селектор: lt.
Omiod
3
Информативный комментарий @nickf, но ссылка на блог и графическая ссылка, похоже, не работают
Fractalf
1
Не могу редактировать сейчас извините - в основном, использование слайса было намного быстрее.
Ник
92
Используйте псевдо-селектор lt:
$("a:lt(n)")
Это соответствует элементам до n-го (исключая n-й элемент). Нумерация начинается с 0.
Дополнительные примечания:
Поскольку: lt () является расширением jQuery и не является частью спецификации CSS, запросы, использующие: lt (), не могут воспользоваться преимуществами повышения производительности, обеспечиваемыми собственным методом DOM querySelectorAll (). Для повышения производительности в современных браузерах используйте $ ("your-pure-css-selector"). Slice (0, index).
Так что используйте $("selector").slice(from, to)для лучшей производительности.
:lt(20)
подход выглядит намного чище, использование слайса намного эффективнее, если у вас большой набор результатов для начала. К сожалению, при оценке ": lt" и других позиционных селекторов jQuery проходит по всему набору , даже если он просто получает первый элемент. Я написал больше об этом в своем блоге здесь: spadgos.com/?p=51Используйте псевдо-селектор lt:
Это соответствует элементам до n-го (исключая n-й элемент). Нумерация начинается с 0.
источник
Я нашел это примечание в конце документа lt () :
Так что используйте
$("selector").slice(from, to)
для лучшей производительности.источник
Попробуйте: селектор lt: http://docs.jquery.com/Selectors/lt#index
источник
.slice () не всегда лучше. В моем случае, с jQuery 1.7 в Chrome 36, .slice (0, 20) завершился ошибкой:
RangeError: превышен максимальный размер стека вызовов
Я обнаружил, что: lt (20) работал без ошибок в этом случае. У меня было, вероятно, десятки тысяч соответствующих элементов.
источник
Документация JQuery
источник