Метод .closest() в Umbrella JS используется для поиска
ближайшего предка элемента, который соответствует заданному селектору. В
отличие от методов, ориентированных на поиск потомков,
.closest() движется вверх по DOM-дереву,
проверяя сам элемент и его родителей до корневого элемента
документа.
u(selector).closest(targetSelector)
selector — CSS-селектор для начального элемента (или
выборка элементов через Umbrella JS).targetSelector — CSS-селектор, которому должен
соответствовать ближайший предок.Метод возвращает новый объект Umbrella, содержащий найденный элемент. Если подходящего предка нет, возвращается пустой объект.
Поиск начинается с самого элемента Если исходный
элемент соответствует селектору targetSelector, метод
вернёт этот элемент, не поднимаясь выше.
Возврат объекта Umbrella Результат можно
использовать как обычную выборку Umbrella, применять к нему методы
.addClass(), .attr(), .remove(),
.find() и другие.
Безопасная работа с множественными элементами
Если исходная выборка содержит несколько элементов,
.closest() возвращает для каждого из них первый подходящий
предок.
Поиск ближайшего родителя с классом
.container:
u('.button').closest('.container').addClass('highlight');
В этом примере все кнопки с классом .button проверяются
на наличие родителя с классом .container. Найденные
контейнеры получают дополнительный класс highlight.
Поиск ближайшего элемента form:
u('input[name="email"]').closest('form').attr('data-validated', 'true');
Метод ищет ближайший родитель <form> для каждого
инпута с именем email и добавляет атрибут
data-validated.
Работа с несколькими уровнями вложенности:
u('.item').closest('.section').find('.title').css('color', 'red');
Сначала для каждого элемента .item находится ближайший
родитель с классом .section, затем в этих родителях
выбираются элементы .title, которым задаётся красный цвет
текста.
Element.closest()Element.closest() работает только с одним
элементом..closest() при необходимости
изменить родителя или предка элемента, не перебирая
весь DOM вручную..find(), .addClass(),
.removeClass() для комплексных действий над блоками
интерфейса.var parent = u('.link').closest('.menu');
if (parent.length) {
parent.addClass('active');
}
Метод .closest() является эффективным инструментом для
работы с DOM-деревом сверху вниз, позволяя быстро находить нужный
контекст для элементов и организовывать взаимодействие между ними без
лишних циклов и проверок.