Dom7 — это лёгкая библиотека для работы с DOM в стиле jQuery, которая широко используется в проектах на фреймворке Framework7 и в чистых JavaScript-приложениях. Одной из ключевых возможностей Dom7 является удобная работа с коллекциями элементов, что позволяет эффективно итерировать их, модифицировать и применять действия к каждому элементу.
В Dom7 результат выборки элементов всегда представляет собой
массивоподобный объект, который содержит все найденные
элементы DOM и методы для работы с ними. Такой объект поддерживает
индексированный доступ к элементам и свойство .length, что
делает возможным использование как обычных циклов for, так
и методов массива.
const items = Dom7('.item');
console.log(items.length); // количество элементов с классом "item"
console.log(items[0]); // первый элемент коллекции
Важно понимать, что Dom7 не возвращает чистый массив, а объект, который ведёт себя почти как массив. Это накладывает некоторые ограничения на использование стандартных методов массива напрямую, однако библиотека предоставляет собственные удобные способы итерации.
eachОсновным инструментом для обхода коллекции является метод
each. Он позволяет выполнить переданную
функцию для каждого элемента коллекции.
Dom7('.item').each(function (index, element) {
console.log(index, element);
});
Особенности метода each:
index — порядковый номер текущего
элемента в коллекции.element — сам DOM-элемент.this ссылается на текущий элемент
коллекции, что удобно для манипуляций:Dom7('.item').each(function () {
this.style.color = 'red';
});
Метод each возвращает исходную коллекцию Dom7, что
позволяет цепочку вызовов комбинировать с другими
методами библиотеки.
Несмотря на наличие each, элементы коллекции можно
перебирать и стандартными средствами Jav * aScript:
const items = Dom7('.item');
for (let i = 0; i < items.length; i++) {
items[i].textContent = `Элемент ${i + 1}`;
}
for (const item of items) {
item.style.backgroundColor = '#f0f0f0';
}
Такой подход полезен, когда требуется использовать возможности современных циклов или встроенных функций массива после преобразования коллекции в массив:
const itemsArray = Array.from(Dom7('.item'));
itemsArray.map(item => item.classList.add('highlight'));
Dom7 предоставляет ряд методов, которые упрощают массовые операции над элементами без явной итерации:
.addClass(className) — добавляет класс
всем элементам коллекции..removeClass(className) — удаляет
класс..css(property, value) — устанавливает
CSS-свойство..attr(attribute, value) — управляет
атрибутами..text(value) и
.html(value) — изменяют текст или HTML
элементов.Пример использования:
Dom7('.item')
.addClass('active')
.css('color', 'blue')
.attr('data-index', '1');
Все эти методы автоматически применяются к каждому элементу коллекции, что делает код более читаемым и кратким по сравнению с ручной итерацией.
Для работы с подмножеством элементов коллекции применяются методы:
.filter(callback) — возвращает новую
коллекцию с элементами, для которых callback возвращает
true.const visibleItems = Dom7('.item').filter(function () {
return this.offsetParent !== null; // только видимые элементы
});
.not(selector) — исключает элементы по
селектору или условию..eq(index) — выбирает элемент по
индексу, который также может использоваться для целевой итерации.Методы .find(selector) и
.children(selector) позволяют итерировать
элементы внутри коллекции:
Dom7('.list').find('.item').each(function () {
this.style.fontWeight = 'bold';
});
Dom7('.list').children('.item').each(function () {
this.style.padding = '10px';
});
Разница:
.find() ищет рекурсивно внутри всех элементов
коллекции..children() ищет только прямых потомков.Особенность Dom7 заключается в возможности цепочек вызовов, что часто заменяет явные циклы:
Dom7('.item')
.filter('.active')
.css('background', 'yellow')
.each(function (index) {
this.textContent = `Активный элемент ${index + 1}`;
});
В этом примере сначала выбираются элементы с классом
.active, затем задаётся стиль, и только потом изменяется
текст каждого элемента.
Dom7(selector) можно сохранять в переменную и повторно
использовать.each — это позволяет обходить только нужные
элементы без создания лишних коллекций.Dom7 делает итерацию по DOM-коллекциям легкой, гибкой и мощной.
Основные инструменты — метод each, фильтры, выборки
вложенных элементов и методы массовых изменений — позволяют эффективно
управлять группами элементов и писать чистый, компактный код.