Umbrella JS — это легкая и быстрая библиотека для работы с DOM, обеспечивающая удобный синтаксис для манипуляций с элементами страницы. Одним из ключевых аспектов является поиск дочерних элементов, который позволяет структурировать работу с DOM так, чтобы взаимодействие с конкретными узлами было максимально простым и гибким.
children()Метод children() возвращает все прямые дочерние
элементы выбранного узла. Его использование аналогично вызову
Element.children в нативном JavaScript, но с поддержкой
цепочек вызовов и всех возможностей Umbrella JS.
Синтаксис:
u('селектор').children();
Примеры:
// Получение всех прямых детей <ul> с классом 'menu'
const items = u('ul.menu').children();
// Применение стиля ко всем прямым детям
u('ul.menu').children().css('color', 'blue');
Особенности метода:
chainable).find() или filter().find()Метод find() позволяет искать все
потомки, соответствующие CSS-селектору, на любом уровне
вложенности. Это более мощный инструмент, чем children(),
когда требуется глубокий поиск в дереве DOM.
Синтаксис:
u('родительский_селектор').find('селектор_потомка');
Примеры:
// Найти все <li> внутри <ul> с классом 'menu'
u('ul.menu').find('li');
// Добавить класс ко всем потомкам <span>
u('.container').find('span').addClass('highlight');
Ключевые моменты:
find() ищет рекурсивно, на любом уровне
вложенности.filter(), чтобы уточнить выборку.После получения дочерних элементов с помощью children()
или find() можно применять фильтры, чтобы
выбрать только нужные элементы.
Методы фильтрации:
filter(selector) — оставляет элементы, подходящие под
CSS-селектор.not(selector) — исключает элементы, подходящие под
селектор.eq(index) — выбирает элемент по индексу.first() и last() — выбирают первый или
последний элемент коллекции.Примеры:
// Выбрать только <li> с классом 'active' среди детей <ul>
u('ul.menu').children().filter('.active');
// Исключить <li> с классом 'disabled'
u('ul.menu').children().not('.disabled');
// Получить первый элемент среди дочерних
u('ul.menu').children().first();
Комбинация методов children() и find()
позволяет управлять структурой DOM на нескольких уровнях.
Примеры сложного выбора:
// Получить все <span> внутри <div> только среди прямых детей <section>
u('section').children().find('span');
// Изменить текст всех <p> внутри <article>, кроме первого
u('article').find('p').not(':first').text('Обновленный текст');
Преимущества такого подхода:
Umbrella JS поддерживает селекторы контекста, что делает поиск дочерних элементов более гибким. Контекст ограничивает область поиска определённым узлом, что ускоряет работу с DOM и упрощает код.
Пример:
// Найти все <input> внутри формы с id 'loginForm'
u('#loginForm').find('input');
// Найти только прямые дочерние <div> внутри блока .wrapper
u('.wrapper').children('div');
После получения дочерних элементов можно сразу выполнять операции над ними без необходимости отдельного сохранения переменной. Это делает код более компактным и читаемым.
Примеры цепочек:
// Сделать все дочерние <li> красными и скрыть первый
u('ul.menu').children('li').css('color', 'red').first().hide();
// Найти все <p> в <article>, добавить класс и изменить текст
u('article').find('p').addClass('highlighted').text('Новый контент');
children() и
find()| Метод | Уровень поиска | Возвращаемое | Применение |
|---|---|---|---|
children() |
Только прямые | Коллекция Umbrella JS | Манипуляции с непосредственными детьми |
find() |
Любой уровень | Коллекция Umbrella JS | Поиск всех потомков по селектору |
Правильный выбор метода зависит от структуры DOM и
задачи: прямые дети для локальных операций, find() — для
глубокого поиска.
children() для локальной и быстрой
работы с элементами.find() только для глубокого
поиска, чтобы избежать ненужного перебора DOM.filter, not,
eq) для точного выбора элементов.Этот подход к поиску дочерних элементов обеспечивает эффективное управление DOM, упрощает манипуляции и повышает читаемость кода при использовании Umbrella JS.