Является ли .find () быстрее основного метода выбора потомков? - PullRequest
7 голосов
/ 06 августа 2010

Слайд 30 в Блог Пола Айриша упомянул:

$('#container').find('div.robotarm') быстрее $('#container div.robotarm')

Это правда?

Ответы [ 3 ]

5 голосов
/ 06 августа 2010

Может быть, в более ранней версии jQuery это имело место. Однако выражение

$('#container div.robotarm')

нормализуется через jQuery в

$('#container').find('div.robotarm')

Таким образом, единственная причина, по которой $('#container div.robotarm') должен быть медленнее, - это накладные расходы при вызове функции. Но это действительно было бы тривиальным различием.

Если этот вызов не был нормализован, sizzle (механизм выбора Resigs css) будет использоваться для поиска этого элемента (справа налево). Это, конечно, будет намного медленнее.

2 голосов
/ 06 августа 2010

Поскольку вы спрашивали мнение, это не имеет значения.

Вы всегда можете придумать случай, когда один работает быстрее, чем другой в каком-то браузере при определенной конфигурации DOM.Не нужно расщеплять волосы.

1 голос
/ 28 января 2016

Это верно только при поиске по идентификатору.

Но когда мы ищем по имени тега, он возвращает разные результаты в современных браузерах, где $('div').find('p') медленнее, чем $('div p'), потому что последний использует querySelector().

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