Dom7 — это лёгкая и быстрая библиотека для работы с DOM, созданная как облегчённая альтернатива jQuery. Одной из ключевых возможностей является удобное управление событиями, включая установку обработчиков и их программное вызвание через триггеры событий.
В Dom7 все методы работы с событиями привязаны к объектам,
возвращаемым функцией $(). Основные методы:
on(eventName, [selector], handler) — привязка
обработчика к событию;off(eventName, [selector], handler) — удаление
обработчика;trigger(eventName, [eventData]) — программное
инициирование события.Метод on поддерживает делегирование событий при передаче
селектора. Это особенно удобно при работе с динамически добавляемыми
элементами.
const buttons = $('.button');
// Привязка клика
buttons.on('click', function (e) {
console.log('Кнопка нажата', e.currentTarget);
});
// Делегирование события
$('.container').on('click', '.button', function (e) {
console.log('Нажатие на кнопку внутри контейнера', e.target);
});
Метод trigger позволяет инициировать любое событие на
выбранных элементах. Можно передавать дополнительную информацию через
объект eventData.
const div = $('#myDiv');
// Триггер кастомного события
div.trigger('customEvent', { foo: 'bar' });
// Обработчик
div.on('customEvent', function (e) {
console.log('Кастомное событие с данными:', e.detail);
});
Ключевой момент: Dom7 автоматически помещает
переданные данные в свойство detail объекта события,
аналогично стандартному CustomEvent.
Dom7 поддерживает все стандартные события браузера:
click, input, focus,
blur, submit и др. При использовании
trigger они ведут себя так же, как если бы происходили
естественным образом. Это позволяет создавать тестовые
сценарии или инициировать поведение элементов программно.
const input = $('#inputField');
// Обработчик события input
input.on('input', function(e) {
console.log('Текущее значение:', e.target.value);
});
// Программное изменение значения и вызов события
input.val('Новое значение').trigger('input');
Метод val() изменяет значение элемента и возвращает
объект Dom7 для цепочки вызовов. Сочетание с trigger делает
код компактным и удобным.
Помимо стандартных, Dom7 позволяет создавать полностью кастомные события. Это удобно для передачи состояния между компонентами:
const box = $('#box');
// Подписка на кастомное событие
box.on('highlight', function(e) {
this.style.backgroundColor = e.detail.color;
});
// Триггер события
box.trigger('highlight', { color: 'yellow' });
Кастомные события могут быть использованы для реализации модульной архитектуры интерфейса без необходимости напрямую вызывать методы компонентов.
Метод off позволяет удалять обработчики как для
конкретного события, так и для группы событий:
const handler = function() { console.log('Клик'); };
$('.button').on('click', handler);
// Удаление обработчика
$('.button').off('click', handler);
// Можно удалить все события одного типа
$('.button').off('click');
// Можно удалить все события на элементе
$('.button').off();
Удаление обработчиков важно для предотвращения утечек памяти и конфликтов при динамическом изменении DOM.
Dom7 автоматически применяет события ко всем элементам выборки. Это обеспечивает массовое управление событиями без циклов:
$('.item').on('mouseenter', function() {
this.style.border = '1px solid red';
});
$('.item').trigger('mouseenter'); // Все элементы будут подсвечены
При использовании trigger можно передавать объект любых
данных. Они становятся доступными через e.detail:
$('#panel').on('toggle', function(e) {
console.log('Состояние панели:', e.detail.state);
});
$('#panel').trigger('toggle', { state: 'open' });
Такой механизм позволяет реализовать коммуникацию между компонентами без глобальных переменных и напрямую передавать контекст.
trigger для тестирования событий и
управления состоянием элементов программно.off для
предотвращения утечек памяти.on(event, selector, handler)
сокращает количество обработчиков на динамических элементах.Dom7 делает работу с событиями лаконичной и унифицированной, обеспечивая простое и мощное управление интерактивностью страницы.