В библиотеке Dom7, используемой в рамках фреймворка
Framework7, предоставляется удобный и лаконичный способ работы с
DOM-элементами, в том числе для навигации по дереву элементов. Метод
.parents() позволяет получить всех предков
выбранного элемента, что особенно полезно при поиске контейнеров,
проверке структуры документа или работе с вложенными компонентами.
$(selector).parents([selector])
selector — необязательный параметр.
Если указан, метод вернёт только те элементы-предки, которые
соответствуют CSS-селектору.Метод возвращает объект Dom7, содержащий все родительские элементы текущего набора.
Метод начинает с каждого элемента, выбранного с помощью селектора или
объекта Dom7, и поднимается по дереву DOM вверх, добавляя каждого
родителя в новый набор. Если указан селектор, добавляются только те
элементы, которые соответствуют ему. Порядок элементов в возвращаемом
объекте — от ближайшего родителя к самому верхнему в дереве (обычно
<html>).
Получение всех родителей элемента
var parents = $('.child-element').parents();
console.log(parents);
В этом примере .parents() вернёт объект Dom7, включающий
все элементы от родителя .child-element до корневого
элемента документа.
Фильтрация родителей по селектору
var containerParents = $('.child-element').parents('.container');
console.log(containerParents);
Здесь будут возвращены только те предки, которые имеют класс
container.
Метод .parents() часто комбинируется с:
.find() — для поиска вложенных
элементов внутри родителей..closest() — для получения ближайшего
родителя, соответствующего селектору..children() и
.siblings() — для обхода дерева DOM в
разные стороны.Пример комбинирования методов:
$('.child-element')
.parents('.container')
.find('.nested-element')
.addClass('highlighted');
В этом коде сначала выбираются все предки
.child-element, которые имеют класс container,
затем внутри них находятся все элементы .nested-element и
им добавляется класс highlighted.
.parents() не
возвращает массив DOM-элементов напрямую, а объект Dom7, который
поддерживает цепочку вызовов методов.<html> и <body>, если не указан
фильтрующий селектор.$('.child-element').parents().addClass('parent-active');
$('.child-element').parents('[data-role="wrapper"]').css('border', '1px solid red');
Метод применим к элементам с любыми атрибутами, что расширяет
возможности управления DOM без необходимости вручную подниматься по
дереву через parentNode.
.closest().parents() возвращает всех родителей,
соответствующих селектору, а .closest() —
только ближайшего..parents() позволяет обрабатывать весь стек родителей,
что полезно для глобальных изменений, .closest() — для
локальных операций..parents() для обхода
всех предков элемента, когда требуется фильтрация по селектору.Метод .parents() является базовым инструментом при
работе с иерархией DOM, обеспечивая гибкую навигацию по родителям и
удобное управление вложенными элементами.