В jQuery $ ('li.item-ii'). Find ('li') совпадает с $ ('li.item-ii li')? - PullRequest
0 голосов
/ 18 июня 2010

В примере поиска jQuery ()
(документ на http://api.jquery.com/find/)

Интересно, зачем нам это нужно, потому что

$('li.item-ii').find('li')

так же, как

$('li.item-ii li')

по существу, все элементы <li> внутри элемента <li>, который имеет класс item-ii

Аналогично * * 1016

$('#id1').find(".class1 #id2")

совпадает с

$('#id1 .class1 #id2")

Обновление: если они одинаковые, зачем нам искать ()? это потому, что, в основном, когда нам нужно дополнительно выбрать некоторые элементы, когда дан другой элемент в переменной, мы можем сделать elementFoo.find("...")?

Ответы [ 2 ]

4 голосов
/ 18 июня 2010

Да, это эквивалентно. Результат такой же, он называется селектором потомков . Их утилита немного отличается (например, использование .end(), .andSelf() и т. Д.), Но для простого выбора элементов вы найдете то же самое установлен.

Для ударов, вы также можете сделать это:

$('li', 'li.item-ii')

Для редактирования: Зачем оно нам нужно? Иногда вы не получаете от селектора, быстрый пример:

$(this).find('.childElementClass')

Во многих случаях вам нужно найти что-то относительно , а не из известного селектора (это может быть элемент DOM, this, документ iframe и т. Д.). Для этого есть много других функций обхода .

1 голос
/ 18 июня 2010

Они в основном идентичны да. Но если, например, у вас уже есть элемент DOM, это может быть очень полезно. Скажем, например, что вы связались с событием щелчка на div и хотите скрыть все промежутки в div. Это так же просто, как $(this).find('span').hide(), тогда как это было бы довольно сложно сделать с другим синтаксисом.

Также иногда имеет смысл сохранить ваш $('li.item-ii') результат в переменной, потому что вы хотите выполнить более 1 запроса (скажем, вы хотите сначала найти под ним li, но также хотите найти и там промежутки). ). Этот синтаксис позволяет вам не дублировать селектор каждый раз, когда вы хотите получить доступ к другому дочернему элементу, что значительно лучше для удобства сопровождения (я полагаю, что может также быть выигрыш в производительности, если не выполнять повторный запуск базового селектора, но, вероятно, это зависит от использовать регистр).

Короче говоря, это два способа сделать одно и то же, да, но они более подходят друг другу при разных обстоятельствах.

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