Zepto.js предоставляет компактный и удобный API для работы с DOM, упрощая навигацию по дереву элементов. В основе лежит выборка элементов через селекторы и цепочки методов для перехода между родителями, детьми и соседними узлами.
Для получения родителя элемента используется метод
parent(). Он возвращает непосредственного
родителя каждого элемента из текущей коллекции.
var item = $('#element');
var parent = item.parent();
Можно передать селектор в parent(selector), чтобы
отфильтровать родителей по определённому критерию:
var parent = item.parent('.container');
Для получения всех предков до корня используется метод
parents(). Он возвращает все элементы от
текущего до корневого, соответствующие опциональному селектору:
var ancestors = item.parents('.wrapper');
Метод closest(selector) возвращает
ближайшего предка, соответствующего селектору. Он полезен, когда нужно
найти конкретный контейнер элемента:
var closestForm = item.closest('form');
Для выбора прямых потомков применяется метод
children(). Он принимает селектор для
фильтрации:
var children = $('#list').children('li');
Для получения всех потомков на любом уровне используется
find(selector). Этот метод глубоко
просматривает дерево элементов и возвращает все совпадающие
элементы:
var inputs = $('#form').find('input[type="text"]');
Методы next() и
prev() позволяют перемещаться к
непосредственному следующему или предыдущему элементу:
var nextItem = $('#current').next();
var prevItem = $('#current').prev();
Они принимают селектор для фильтрации:
var nextVisible = $('#current').next(':visible');
Методы nextAll() и
prevAll() возвращают всех следующих или
предыдущих соседей:
var followingItems = $('#current').nextAll('li');
Метод siblings() выбирает всех соседей
текущего элемента за исключением самого элемента:
var siblings = $('#current').siblings('.active');
Zepto позволяет дополнительно фильтровать коллекции методом
filter(selector) и исключать элементы с
помощью not(selector):
var filtered = $('#list').children().filter('.highlight');
var withoutFirst = $('#list').children().not(':first');
Метод is(selector) проверяет,
соответствует ли хотя бы один элемент из коллекции селектору:
if ($('#item').is('.active')) {
console.log('Элемент активен');
}
Одной из сильных сторон Zepto является возможность цепочек. Например, можно выбрать элементы, подняться к родителю и найти внутри другие элементы:
$('#item').parent().find('input:checked').val();
Или получить всех соседей, исключая определённые:
$('#item').siblings().not('.disabled').addClass('highlight');
Такой подход позволяет писать компактный и читаемый код для сложной навигации по дереву DOM.
parentsUntil, в
Zepto отсутствуют, но их легко заменить комбинациями
parents() и filter().children(), find(),
siblings() и closest() работают аналогично
jQuery, но за счёт меньшего объёма кода библиотека весит значительно
меньше.| Метод | Описание |
|---|---|
parent([selector]) |
Непосредственный родитель |
parents([selector]) |
Все предки до корня |
closest(selector) |
Ближайший родитель, соответствующий селектору |
children([selector]) |
Прямые потомки |
find(selector) |
Все потомки на любом уровне |
next([selector]) |
Следующий сосед |
prev([selector]) |
Предыдущий сосед |
nextAll([selector]) |
Все следующие соседи |
prevAll([selector]) |
Все предыдущие соседи |
siblings([selector]) |
Все соседи, кроме текущего |
filter(selector) |
Фильтрация коллекции |
not(selector) |
Исключение элементов |
is(selector) |
Проверка соответствия хотя бы одного элемента |
Эти инструменты позволяют эффективно перемещаться по DOM и создавать динамические, интерактивные интерфейсы с минимальным объёмом кода.