Dom7 — это компактная и быстрая библиотека для работы с DOM в JavaScript, созданная как облегчённая альтернатива jQuery. Центральным понятием в Dom7 является коллекция элементов, которая предоставляет удобный интерфейс для манипуляций с DOM.
Коллекция создаётся вызовом функции Dom7 или её
сокращением $. В качестве аргумента можно передать
CSS-селектор, HTML-строку или массив/NodeList элементов.
// По CSS-селектору
const items = $('.item');
// По HTML-строке
const newDiv = $('<div class="new-element">Hello</div>');
// По массиву элементов
const elements = $(document.querySelectorAll('p'));
Коллекция всегда возвращает объект с индексируемыми элементами, а
также методом .length, аналогично массиву, но с набором
дополнительных методов для удобной работы с DOM.
Коллекция Dom7 поддерживает прямой доступ по индексу и перебор с помощью встроенных методов:
const firstItem = items[0]; // Первый элемент
const lastItem = items[items.length - 1]; // Последний элемент
// Перебор через each
items.each((index, el) => {
console.log(index, el.textContent);
});
Метод .each принимает функцию с двумя параметрами:
индекс элемента и сам DOM-узел. Это упрощает операции, требующие
итерации по всем элементам коллекции.
Коллекции Dom7 позволяют добавлять элементы в DOM или удалять их без
прямого обращения к appendChild или
removeChild.
// Добавление
$('.container').append('<p>Новый параграф</p>');
$('.container').prepend('<h1>Заголовок</h1>');
// Удаление
$('.item-to-remove').remove();
Методы append, prepend, remove
работают сразу с коллекцией элементов, что избавляет от необходимости
использовать циклы.
Манипуляции с классами и атрибутами в Dom7 выполняются методами
.addClass, .removeClass,
.toggleClass и .attr.
$('.item').addClass('active');
$('.item').removeClass('inactive');
$('.item').toggleClass('highlight');
$('.item').attr('data-id', '123'); // Установка атрибута
console.log($('.item').attr('data-id')); // Получение атрибута
При работе с атрибутами и классами все изменения применяются ко всей коллекции, что делает код лаконичным и удобным.
Для чтения и изменения текста и HTML используется метод
.text() и .html():
$('.item').text('Новый текст'); // Изменение текста
console.log($('.item').text()); // Получение текста
$('.item').html('<span>HTML содержимое</span>'); // Изменение HTML
console.log($('.item').html()); // Получение HTML содержимого
Эти методы автоматически применяются ко всем элементам коллекции при установке значения и возвращают значение первого элемента при чтении.
Dom7 предоставляет удобные методы для работы с событиями:
.on, .off, .once,
.trigger.
$('.button').on('click', (e) => {
console.log('Кнопка нажата', e.target);
});
$('.button').off('click'); // Удаление обработчика
$('.button').once('mouseenter', () => {
console.log('Наведение один раз');
});
$('.button').trigger('click'); // Программное срабатывание события
Методы событий работают с коллекцией элементов целиком, что позволяет назначать обработчики сразу на несколько узлов.
Метод .css() используется для получения и установки
стилей:
$('.box').css('color', 'red'); // Установка одного свойства
$('.box').css({ backgroundColor: 'blue', fontSize: '16px' }); // Несколько свойств
console.log($('.box').css('color')); // Получение значения свойства
Передача объекта позволяет устанавливать сразу несколько CSS-свойств для всей коллекции, упрощая управление стилями.
Dom7 поддерживает цепочку методов, возвращая коллекцию после каждой операции:
$('.container')
.find('.item')
.addClass('highlight')
.css('border', '1px solid black');
Метод .find() возвращает новую коллекцию, состоящую из
потомков найденных элементов, что облегчает работу с вложенными
структурами DOM.
Для навигации по DOM доступны методы .parent(),
.parents(), .children(),
.siblings(), .next(),
.prev().
$('.item').parent().addClass('parent-highlight');
$('.item').siblings().css('opacity', '0.5');
$('.item').children('.sub-item').hide();
Эти методы возвращают коллекции элементов, что позволяет сразу применять к ним любые операции.
Хотя коллекция Dom7 похожа на массив, для некоторых задач может понадобиться настоящий массив:
const arrayOfElements = $('.item').toArray();
Метод .toArray() возвращает массив DOM-узлов, пригодный
для использования с нативными методами JavaScript, такими как
map, filter и forEach.
Коллекции элементов в Dom7 образуют основу всей библиотеки, обеспечивая удобный и интуитивный доступ к DOM, минимизируя необходимость написания повторяющегося кода и улучшая читаемость и поддерживаемость проектов.