Dom7 — это легковесная библиотека для работы с DOM, широко используемая в проектах на базе Framework7. Она предоставляет удобный API для управления событиями, позволяя работать с ними так же, как с jQuery, но с минимальным весом и высокой производительностью. Основная цель методов событий — добавление, удаление, делегирование и однократное прослушивание событий.
on()Синтаксис:
$(selector).on(eventName, targetSelector, handler);
eventName — строка с названием события (например,
'click', 'input',
'touchstart').targetSelector — необязательный параметр для
делегирования (событие отслеживается на потомках).handler — функция-обработчик события.Особенности:
'click touchstart'.Пример использования:
$('.button').on('click', function (e) {
console.log('Кнопка нажата', e.target);
});
$(document).on('click', '.dynamic-item', function () {
console.log('Динамический элемент нажат');
});
once()Синтаксис:
$(selector).once(eventName, targetSelector, handler);
on(), но обработчик вызывается
только один раз.Пример использования:
$('.button').once('click', function () {
console.log('Сработало только один раз');
});
off()Синтаксис:
$(selector).off(eventName, targetSelector, handler);
on().Особенности:
eventName, удаляются все
обработчики данного события.targetSelector.Пример использования:
function clickHandler() {
console.log('Нажатие кнопки');
}
$('.button').on('click', clickHandler);
$('.button').off('click', clickHandler); // удаляет только clickHandler
trigger()Синтаксис:
$(selector).trigger(eventName, eventData);
eventData — объект, который можно передать
обработчику.Пример использования:
$('.button').on('customEvent', function (e, data) {
console.log('Событие вызвано', data);
});
$('.button').trigger('customEvent', { value: 123 });
transitionEnd()Синтаксис:
$(selector).transitionEnd(callback);
transition).Пример использования:
$('.box').transitionEnd(function () {
console.log('Переход завершен');
});
animationEnd()Синтаксис:
$(selector).animationEnd(callback);
@keyframes).Пример использования:
$('.box').animationEnd(function () {
console.log('Анимация завершена');
});
once с
делегированиемDom7 поддерживает делегирование даже в методе once, что
позволяет отследить событие на элементах, которые появятся в DOM после
инициализации обработчика.
Пример использования:
$(document).once('click', '.dynamic-item', function () {
console.log('Событие на динамическом элементе сработало один раз');
});
Все методы событий поддерживают указание нескольких событий через пробел. Это позволяет сокращать код и добавлять один обработчик на несколько событий сразу.
Пример:
$('.button').on('click mouseenter mouseleave', function () {
console.log('Сработало одно из событий');
});
click(), focus(), blur(),
input(), change() — короткие методы,
эквивалентные on('event', handler).Пример:
$('.input').input(function () {
console.log('Произошел ввод текста');
});
Dom7 предоставляет поддержку touchstart,
touchmove, touchend, tap и других
событий сенсорного ввода. Это позволяет создавать мобильные интерфейсы
без сторонних библиотек.
Пример:
$('.swipe-area').on('swipeleft swiperight', function (e) {
console.log('Произошло свайп-событие', e.type);
});
Методы событий Dom7 легко комбинируются:
$('.button')
.on('click', function () { console.log('Click'); })
.once('mouseenter', function () { console.log('Hover один раз'); })
.off('click'); // удаляет click
Такой подход позволяет лаконично управлять событиями без повторного поиска элементов в DOM.