jQuery итерация - метод find()
Пример
Поиск всех后代 span элементов в всех абзацах и изменение их цвета на красный:
$("p").find("span").css('color','red');
Определение и использование
Метод find() для каждого элемента в текущем наборе элементов получает потомков, фильтруя их с помощью селектора, jQuery объекта или элемента.
Синтаксис
.find(selector)
Параметр | Описание |
---|---|
selector | Строковое значение, содержащее селектор выражение для соответствия текущему набору элементов. |
Подробное описание
Если передан jQuery объект, представляющий набор элементов DOM, метод .find() позволяет нам искать эти элементы среди их потомков в дереве DOM и создавать новый jQuery объект из соответствующих элементов. .find() ähnlich .children() методу, только последний遍ствует только по одному уровню вниз по дереву DOM.
.find() метод имеет очевидную особенность: его селектор выражение совпадает с типом выражения, которое мы передаем функции $(). Оно фильтрует элементы, проверяя, соответствуют ли они выражению.
Пожалуйста, подумайте о следующем простом вложенном списке:
<ul class="level-1"> <li class="item-i">I</li> <li class="item-ii">II <ul class="level-2"> <li class="item-a">A</li> <li class="item-b">B <ul class="level-3"> <li class="item-1">1</li> <li class="item-2">2</li> <li class="item-3">3</li> </ul> </li> <li class="item-c">C</li> </ul> </li> <li class="item-iii">III</li> </ul>
Мы начнем искать элементы списка II, чтобы найти в нем элементы списка:
$('li.item-ii').find('li').css('background-color', 'red');
Результат этого исследования показал, что проектам A, B, 1, 2, 3 и C был установлен красный фон. Даже если проект II соответствует выборочному выражению, он не будет включен в результат; будет производиться только совпадение с потомками.
В отличие от других методов遍вания дерева, выборочный выражение для .find() является обязательным параметром. Если необходимо получить все потомки элементов, можно передать wildcard-выборщик '*'.
Выборщик контекста реализован методом .find(); поэтому $('li.item-ii').find('li') эквивалентно $('li', 'li.item-ii').
Для jQuery 1.6 мы также можем использовать заданный jQuery-сборник или элемент для фильтрации. Вновь рассмотрим вложенный список, и сначала напишем так:
var $allListElements = $('li');
Затем передайте этот jQuery-объект методу find:
$('li.item-ii').find( $allListElements );
Этот код вернет jQuery-сборник, который содержит элементы списка II, являющиеся потомками списка.
Аналогично, можно передать элемент:
var item1 = $('li.item-1')[0]; $('li.item-ii').find( item1 ).css('background-color', 'red');
Результат этого вызова - проект 1 был установлен с красным фоном.