Dom7 — это лёгкая и высокопроизводительная библиотека для работы с DOM в JavaScript, изначально созданная для использования в Framework7, но пригодная и для самостоятельного применения. Она предоставляет удобный синтаксис для выбора элементов, манипуляций с ними, обработки событий и управления состоянием элементов на странице.
Для работы с элементами используется функция
$, которая возвращает объект Dom7,
аналогичный массиву, но с расширенными методами:
const elems = $('.my-class'); // Получение всех элементов с классом my-class
Dom7 поддерживает CSS-селекторы, DOM-элементы и массивы элементов. Например:
const button = $('#submit-button'); // Элемент по ID
const items = [document.querySelector('.item')];
const domItems = $(items); // Преобразование массива в объект Dom7
Dom7 предоставляет удобные методы для чтения и изменения содержимого, атрибутов и стилей элементов.
Работа с HTML и текстом:
$('.content').html('<p>Новый контент</p>'); // Установка HTML
$('.content').html(); // Получение HTML
$('.title').text('Заголовок'); // Установка текста
$('.title').text(); // Получение текста
Атрибуты и свойства элементов:
const link = $('.link');
link.attr('href', 'https://example.com'); // Установка атрибута
link.attr('href'); // Получение атрибута
link.removeAttr('disabled'); // Удаление атрибута
Работа с классами:
$('.box').addClass('active'); // Добавление класса
$('.box').removeClass('active'); // Удаление класса
$('.box').toggleClass('highlight'); // Переключение класса
Стили элементов:
$('.box').css('background-color', 'red'); // Установка стиля
$('.box').css('background-color'); // Получение стиля
Dom7 упрощает добавление и удаление событий, позволяя писать чистый и лаконичный код.
Добавление событий:
$('.button').on('click', function (event) {
console.log('Кнопка нажата', event.target);
});
Удаление событий:
$('.button').off('click'); // Удаление обработчика
Поддерживаются делегированные события, что особенно полезно для динамически добавляемых элементов:
$(document).on('click', '.dynamic-item', function (e) {
console.log('Нажат элемент с классом dynamic-item');
});
Dom7 позволяет легко перемещаться по DOM, выбирать потомков, родителей и соседние элементы.
Поиск внутри элемента:
const container = $('.container');
const items = container.find('.item'); // Все элементы .item внутри .container
Родительские и соседние элементы:
const item = $('.item.active');
item.parent(); // Родитель
item.parents('.wrapper'); // Все родительские элементы до .wrapper
item.siblings(); // Соседи
item.next(); // Следующий элемент
item.prev(); // Предыдущий элемент
Dom7 предоставляет методы для удобной работы с формами, включая получение и установку значений полей.
const input = $('input[name="username"]');
input.val('John'); // Установка значения
input.val(); // Получение значения
Для чекбоксов и радиокнопок:
$('input[type="checkbox"]').prop('checked', true); // Установка состояния
$('input[type="checkbox"]').prop('checked'); // Получение состояния
Dom7 включает простые методы для анимаций и плавного изменения состояния элементов.
Показ и скрытие элементов:
$('.box').show(); // Показать элемент
$('.box').hide(); // Скрыть элемент
$('.box').toggle(); // Переключение видимости
Изменение прозрачности и анимации:
$('.box').fadeIn(500); // Появление с плавной анимацией
$('.box').fadeOut(500); // Исчезновение
Dom7 позволяет получать размеры и координаты элементов:
const box = $('.box');
box.width(); // Ширина
box.height(); // Высота
box.offset(); // Объект {top, left} — позиция относительно документа
Также можно задавать размеры напрямую:
box.width(200);
box.height(100);
Объекты Dom7 поддерживают методы перебора, что упрощает работу с множеством элементов:
$('.item').each(function (index, element) {
console.log('Элемент', index, element);
});
map и filter можно использовать для трансформаций и фильтрации элементов:
const ids = $('.item').map(el => el.id); // Массив всех id элементов
const visibleItems = $('.item').filter(el => el.offsetParent !== null); // Только видимые
Dom7 легко комбинируется с нативным JavaScript и другими библиотеками. Любой объект Dom7 можно использовать как массив элементов:
const firstItem = $('.item')[0]; // Доступ к нативному DOM-элементу
firstItem.addEventListener('click', () => console.log('Нативный обработчик'));
Dom7 обеспечивает короткий и удобный синтаксис для большинства стандартных операций с DOM, сохраняя совместимость с современными браузерами и оптимизируя производительность за счёт минимального накладного кода.