Метод $.find() является одним из ключевых инструментов
для работы с DOM в библиотеке Bliss.js. Он позволяет искать элементы
внутри выбранного узла или коллекции узлов, предоставляя гибкий и
удобный способ навигации по документу.
$(selector).find(subSelector)
selector — строка CSS-селектора, используемая для
выбора исходных элементов.subSelector — строка CSS-селектора, указывающая
элементы, которые нужно найти внутри исходных элементов.Метод возвращает коллекцию элементов,
соответствующих subSelector, находящихся внутри каждого
элемента из исходной выборки. Эта коллекция является объектом Bliss.js,
что позволяет использовать цепочки методов.
// Выбрать все элементы <div> с классом "container" и найти в них все <p>
var paragraphs = $('.container').find('p');
// Найти все элементы с классом "item" внутри <ul id="menu">
var menuItems = $('#menu').find('.item');
В обоих случаях результатом будет объект Bliss.js, содержащий найденные элементы.
Поиск внутри каждого элемента выборки Если
исходная выборка содержит несколько элементов, $.find()
выполняет поиск внутри каждого из них, объединяя
результаты в единую коллекцию.
Возврат коллекции Bliss.js В отличие от
стандартного querySelectorAll, метод возвращает объект
Bliss.js, что упрощает дальнейшие манипуляции:
$('.container').find('p').addClass('highlight');
$('#menu').find('li:first-child'); // первый элемент списка
$('.form').find('input[type="text"]'); // все текстовые поля внутри формы
$.find() не изменяет исходный объект
Bliss.js. Исходные элементы остаются доступными для дальнейших
операций:var containers = $('.container');
var paragraphs = containers.find('p');
console.log(containers.length); // количество исходных контейнеров
console.log(paragraphs.length); // количество найденных <p> элементов
Поскольку результат $.find() возвращает объект Bliss.js,
возможны длинные цепочки вызовов методов:
$('.container')
.find('p')
.filter('.important')
.addClass('highlight')
.on('click', function() {
console.log('Paragraph clicked');
});
В этом примере происходит:
<p> внутри контейнеров..important..highlight.click.Метод $.find() оптимизирован для поиска внутри выбранной
коллекции, что часто быстрее, чем многократные вызовы глобального
селектора $(subSelector). Он особенно эффективен при работе
с глубокими и вложенными DOM-структурами, где требуется ограничить
область поиска.
.closest() — поиск ближайшего
родителя, в то время как .find() ищет потомков..filter() — позволяет сузить
результаты поиска по дополнительным критериям..each() — перебор найденных элементов
с выполнением пользовательской функции.$('.container')
.find('p')
.filter('.active')
.each(function(p) {
p.textContent = 'Обновленный текст';
});
Метод работает с элементами, добавленными в DOM после первоначальной загрузки страницы, если поиск выполняется после вставки новых узлов:
$('.container').append('<p class="new">Новый абзац</p>');
var newParagraphs = $('.container').find('p.new');
Метод $.find() обеспечивает гибкий и мощный инструмент
для поиска элементов внутри выбранной коллекции, поддерживает любые
CSS-селекторы и полностью интегрируется с цепочками методов Bliss.js.
Его правильное использование позволяет писать чистый, читаемый и
производительный код для работы с DOM.