Селекторы синтаксиса jQuery, это ТОЧНО одно и то же?
-
10-07-2019 - |
Вопрос
Я заметил некоторые предпочтения в отношении синтаксиса выбора, такие как:
$('#mydiv > a.selectMe').hide();
$('#mydiv').children('a.selectMe').hide();
Мне это кажется немного запутанным, поскольку документация по jQuery здесь немного двусмысленна:
"Родитель> Ребенок возвращается:Массив соответствует всем детствам, указанным «ребенком» элементов, указанных «Родителем»."
и
"Дети (Expr) возвращаются:jQuery Получите набор элементов, содержащих все уникальные непосредственные дети каждого из подходящих элементов."
Вопрос, который, по моему мнению, необходимо прояснить, заключается в том, возвращает ли первая форма ВСЕХ детей/внуков или только ближайших детей, как указывает вторая форма.Одна из них — это форма «селектора», а другая — в разделе «обход» на страницах документации jQuery, которые для меня представляют собой схожие функциональные задачи, но не совсем одно и то же.
Итак, вопросы здесь:
Какая форма быстрее?ДЕЙСТВИТЕЛЬНО ли они выбирают одно и то же, или форма «родитель > ребенок» выбирает как внуков, так и ближайших детей?
Решение
$('#mydiv a.selectMe') — находит все привязки класса selectMe, которые являются потомками тега с идентификатором "mydiv".Они могут быть глубоко вложены.
$('#mydiv > a.selectMe') — находит непосредственных дочерних элементов.
Что касается того, что быстрее из двух ваших примеров рождения непосредственных детей...Я провел несколько испытаний на время, чтобы проверить.
У меня была страница с 10 000 тегами привязки с классом selectMe внутри Div с идентификатором mydiv.
$("#mydiv").children("a.selectMe") - 485ms $("#mydiv > a.selectMe") - 374ms
По сути, это незначительная разница, хотя выполнение всего с помощью селекторов всегда происходило быстрее.Однако если у вас на странице 10 тысяч привязок, вы столкнулись с совершенно другой проблемой.:-)