Dom7 — это минималистичная библиотека для работы с DOM, используемая в основном во фреймворке Framework7, но полностью независимая и пригодная для любых проектов. Основная сила Dom7 заключается в удобных методах для поиска элементов, манипуляций с ними и работы с событиями. Контекст поиска определяет, в каком месте DOM будет производиться выборка элементов.
Поиск элементов в Dom7 начинается с вызова функции $(),
которая является аналогом $ в jQuery:
var el = $('.my-class');
Аргументом может быть любой CSS-селектор. Результатом является объект Dom7, содержащий массив найденных элементов и методы для работы с ними.
Если контекст явно не указан, поиск выполняется по всему документу:
var items = $('.list-item'); // ищет все элементы с классом list-item на странице
Внутри Dom7 контекст реализован через необязательный второй аргумент
функции $():
var container = $('.list');
var items = $('.list-item', container);
В этом примере поиск .list-item производится только
внутри элементов container. Это повышает производительность
при работе с большим DOM и позволяет ограничивать область поиска.
Dom7 поддерживает цепочку поиска внутри уже найденных элементов:
var lists = $('.list'); // все списки на странице
var items = lists.find('.item'); // элементы .item внутри каждого списка
Метод .find() создаёт новый объект Dom7, содержащий
найденные элементы, при этом исходный объект сохраняется. Такой подход
позволяет создавать сложные выборки без повторного обращения к
$().
Методы обхода DOM, такие как .children(),
.parent(), .siblings(), работают в пределах
уже выбранного контекста:
var container = $('.list');
var children = container.children('.item'); // только непосредственные потомки с классом .item
var parent = container.parent(); // родитель контейнера
var siblings = container.siblings('.highlight'); // соседние элементы с классом .highlight
Важно помнить, что эти методы возвращают новый объект Dom7, что позволяет комбинировать их с другими методами:
var highlightedChildren = $('.list').children().siblings('.highlight');
В качестве контекста можно использовать не только объект Dom7, но и любое DOM-узло:
var container = document.getElementById('main');
var items = $('.list-item', container); // поиск только внутри #main
Это полезно при интеграции с обычным JavaScript, когда есть элементы,
полученные через стандартные методы (getElementById,
querySelector).
Если элементы добавляются динамически, важно выполнять поиск после их создания или использовать методы делегирования событий вместо постоянного поиска:
$(document).on('click', '.dynamic-button', function () {
console.log('Кнопка нажата');
});
Метод on позволяет назначать события на элементы,
которые появятся в будущем, сохраняя контекст документа как базовый.
$() и
.find()$() с селектором и контекстом ищет элементы внутри
указанного контейнера..find() ищет элементы только внутри текущего
объекта Dom7.Пример различий:
var container = $('.list'); // объект Dom7 с элементами списка
var items1 = $('.item', container); // ищет все .item внутри container
var items2 = container.find('.item'); // аналогично, но использует уже выбранные элементы как контекст
На больших DOM-деревьях .find() работает быстрее, так
как не ищет элементы заново по всему документу, а использует уже
выбранный контекст.
Dom7 позволяет работать с массивами контекстов:
var containers = $('.list');
var items = $('.item', containers); // ищет .item в каждом найденном контейнере
Результат — плоский объект Dom7, содержащий все найденные элементы без дублирования.
.find() вместо
повторного $().Контекст поиска в Dom7 — это инструмент управления областью действия селекторов, который обеспечивает скорость, точность и безопасность выборки. Понимание его принципов критично для эффективного построения интерфейсов с большим количеством элементов.