Оптимизируйте селектор jQuery с помощью: first - PullRequest
5 голосов
/ 10 декабря 2010

У меня было ощущение, что $('.class:first') работает быстрее, чем $('.class').Поэтому, когда я знаю, что в подмножестве есть только один .class, я его использовал.

:first делает запрос более быстрым или ненужным?

Ответы [ 2 ]

4 голосов
/ 10 декабря 2010

Это на самом деле зависит от браузера, :first не является селектором CSS, это фильтр jQuery - так что требуется дополнительная работа по синтаксическому анализу ... где само по себе .classпередан в собственный метод выбора браузера (например, document.querySelectorAll() здесь).

Любой из них на самом деле будет быстрее:

$('.class').first()
//or...
$('.class').eq(0)
//or fastest:
$('.class').slice(0, 1)

... поскольку они запускают собственный код, тогда просто возьмите первую запись в этом наборе.

2 голосов
/ 10 декабря 2010

Во всяком случае, анализ и последующий запуск фильтра на :first должны замедлить его работу.Если вы ищете один элемент, выполните:

$('.class', context).eq(0)

Таким образом, вы можете ограничить область поиска до context и просто убрать один (или нет) элемент, используя .eq(0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...