Селектор jQuery - что быстрее? - PullRequest
6 голосов
/ 01 марта 2010

$ ('# content td # foo'). Show (); $ ( '# Тд Foo') шоу ();.

ТД находится где-то глубоко в разделе содержимого.

Что быстрее?

Ответы [ 3 ]

16 голосов
/ 01 марта 2010

Самый быстрый:

$('#foo').show();

Идентификаторы должны быть уникальными, это приводит к поиску в хеш-таблице в браузере ссылки на элемент DOM, которая не становится быстрее. Если ваш идентификатор foo не уникален, у вас есть другие проблемы ... это неверный HTML.

16 голосов
/ 01 марта 2010

Вы можете просто написать

$("#foo").show();

Вы не можете иметь более 1 элемента с одинаковым идентификатором. Поэтому нет необходимости использовать какой-либо дополнительный селектор, чтобы получить элемент с определенным идентификатором. Таким образом, ваш селектор тегов td можно избежать.

8 голосов
/ 01 марта 2010

Оба этих селектора будут разрешать:

$('#foo').show();

однако инструкция гласит:

Для селекторов идентификаторов jQuery использует JavaScript-функцию document.getElementById (), которая чрезвычайно эффективна. Когда к селектору идентификатора присоединяется другой селектор, такой как h2 # pageTitle, jQuery выполняет дополнительную проверку, прежде чем идентифицировать элемент как совпадение .

Вы можете считать вышеупомянутую дополнительную проверку совершенно бессмысленной, если только у вас нет дублирующих идентификаторов в разметке, что неверно с точки зрения определения и использования атрибута HTML ID. См http://www.w3schools.com/tags/att_standard_id.asp.

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