Dom7 — это компактная и высокоэффективная библиотека для работы с DOM в JavaScript, часто используемая вместе с фреймворком Framework7, но применимая и отдельно. Одной из важных возможностей является навигация между элементами, находящимися на одном уровне в DOM-дереве — так называемые siblings.
Навигация по siblings позволяет быстро получать соседние элементы, фильтровать их и применять к ним методы библиотеки, что упрощает манипуляции с группами элементов без необходимости писать сложные циклы на чистом JavaScript.
В Dom7 доступны методы для получения ближайших соседей элемента:
next()Метод next() возвращает следующий
sibling относительно выбранного элемента. Если элементов
несколько, метод возвращает для каждого элемента коллекцию,
соответствующую следующему sibling.
const item = $$('.item.active');
const nextItem = item.next();
const firstNext = item.next()[0];
const nextButton = item.next('.button');
В этом случае возвращается следующий sibling, который соответствует
классу .button.
prev()Метод prev() работает аналогично next(), но
возвращает предыдущий sibling.
const prevItem = item.prev();
const prevButton = item.prev('.button');
siblings()Метод siblings() возвращает все элементы на том
же уровне, исключая сам исходный элемент.
const allSiblings = item.siblings();
const visibleSiblings = item.siblings('.visible');
item.siblings().removeClass('active');
Dom7 позволяет комбинировать методы для точного выбора элементов:
$$('.item.active')
.siblings('.highlight') // выбираем соседей с классом highlight
.next() // получаем следующий элемент для каждого
.addClass('next-active'); // добавляем класс
В этом примере цепочка методов позволяет пройтись по элементам на одном уровне, выбрать нужные, и сразу применить изменения.
Методы навигации возвращают коллекцию Dom7, поэтому можно использовать стандартные методы перебора:
$$('.item.active').siblings().each((el, index) => {
if (!el.classList.contains('disabled')) {
el.style.backgroundColor = 'yellow';
}
});
each принимает функцию с двумя
параметрами: элемент (el) и индекс
(index).Если выбрать несколько элементов, Dom7 применяет методы ко всем выбранным элементам одновременно:
$$('.list-item.active').next().addClass('highlight');
Здесь next() применяется для каждого
активного элемента, и к каждому следующему sibling добавляется
класс .highlight.
Аналогично, siblings() возвращает всех
соседей для каждого элемента коллекции, что позволяет легко
работать с множественными элементами без дополнительных циклов.
item.siblings('div').addClass('visible');
item.prev().find('span').text('Обновлено');
Методы возвращают Dom7 коллекцию, а не обычный
массив, поэтому доступны все методы библиотеки (addClass,
removeClass, css, attr и
т.д.).
Для чистого доступа к нативному DOM-элементу
используется индекс или метод .get(index):
const firstSibling = item.siblings().get(0);
siblings() удобно для изменения
состояния элементов в группах, например при переключении
вкладок или галерей.В чистом JavaScript для получения siblings приходилось использовать
сочетание parentNode и children, фильтровать
массивы и проверять элементы вручную. Dom7 значительно сокращает эти
операции:
// Чистый JS
const siblings = Array.from(item.parentNode.children).filter(el => el !== item);
// Dom7
const siblings = item.siblings();
Навигация по siblings в Dom7 — мощный инструмент для работы с элементами на одном уровне DOM, позволяющий быстро получать соседние элементы, фильтровать их и применять изменения с минимальным кодом и высокой читаемостью.