Почему 1 быстрее 2?
$ ('# p1'). find ('span');
$ ('# p1 span');
В jQuery 1.4 селектор проверяется, является ли он селектором id
(например, ваш # p1
).
document.getElementId (...)
, и результат помещается в служебный объект jQuery и возвращается. Лучше всего протестировать!
Из этого простого теста:
Тест
Версия: jQuery 1.4.2
$ ('# p1'). Find ('span' );
: 2601 мс
$ ('# p1 span');
: 1998 мс Похоже, что единственный селектор в этом случае работает быстрее, поскольку вы не делаете столько вызовов через jQuery это имеет смысл.
Попробуйте здесь, посмотрите на свою консоль .
Если вы используете jQuery 1.3.2, вот эти результаты:
$ ('# p1'). Find ('span');
: 3225ms $ ('# p1 span' );
: 2082 мс В вашем случае, возможно, №1 быстрее, чем №2, но в зависимости от того, сколько итераций и сколько элементов нужно искать, №2 вполне может быть быстрее, чем №1 в других сценариях.
Например: я бы предположил, что если бы у вас было 3 элемента span
и никаких других элементов в # p1
, то №1 был бы быстрее, чем №2, так как find не пытается сделать как можно больше сопоставления CSS. Но если бы у вас было 1000 элементов span
, а также 2000 других элементов в # p1
, держу пари, что №2 будет быстрее, так как ему не нужно повторять каждый элемент дважды.