Библиотека Cash предоставляет компактный и удобный способ работы с DOM, во многом повторяя функциональность jQuery, но с меньшим весом и современным подходом. Одной из ключевых возможностей является привязка и управление обработчиками событий.
Cash использует несколько основных методов для привязки, удаления и управления событиями:
on(event, selector, handler) —
привязка обработчика события.off(event, selector, handler) —
удаление обработчика события.trigger(event, data) — программный
вызов события на элементе.one(event, selector, handler) —
привязка обработчика, который выполнится только один раз.on()Метод on() позволяет привязывать обработчики к одному
или нескольким событиям. Синтаксис может быть разным в зависимости от
потребностей:
$(selector).on('click', handler);
$(selector).on('click mouseenter', handler);
$(selector).on('click', 'button', handler);
Делегирование полезно, когда элементы создаются динамически:
$('#list').on('click', 'li', function(event) {
console.log('Нажат элемент списка:', this.textContent);
});
В этом случае обработчик привязан к родительскому элементу, а не к
каждому <li> отдельно. Это повышает
производительность при работе с большим количеством элементов.
off()Удаление обработчиков выполняется с помощью off().
Синтаксис схож с on():
$(selector).off('click', handler);
$(selector).off('click', 'button', handler);
Если вызвать off() без аргументов, все обработчики на
элементе будут удалены:
$('#button').off();
Удаление конкретного обработчика по функции позволяет контролировать поведение элементов без полного снятия всех слушателей.
one()one() привязывает обработчик, который выполняется
один раз, после чего автоматически удаляется:
$('#button').one('click', function() {
console.log('Событие выполнено один раз');
});
Такой подход полезен для одноразовых уведомлений, приветственных модальных окон или активации элементов только при первом взаимодействии пользователя.
trigger()trigger() используется для программного запуска событий,
что позволяет имитировать действия пользователя:
$('#button').trigger('click');
$('#input').trigger('input', { value: 'тест' });
Второй аргумент может передавать дополнительные данные в обработчик:
$('#button').on('click', function(event, data) {
console.log(data.value);
});
В Cash обработчик вызывается с контекстом (this) на
DOM-элементе, к которому привязан обработчик:
$('li').on('click', function() {
console.log(this); // <li> элемент
});
Для доступа к объекту Cash внутри обработчика можно использовать
$:
$('li').on('click', function() {
$(this).addClass('active');
});
Можно одновременно привязать несколько событий, указав их через пробел:
$('#input').on('focus blur', function(event) {
console.log('Событие:', event.type);
});
Также возможно использовать объект с парами событие–обработчик:
$('#button').on({
click: function() { console.log('Клик'); },
mouseenter: function() { console.log('Наведение'); }
});
Метод on() позволяет передавать данные в обработчик
через второй аргумент (если используется без селектора):
$('#button').on('click', { id: 123 }, function(event) {
console.log(event.data.id); // 123
});
Это особенно полезно для передачи статических данных, без необходимости захвата переменных внешней области видимости.
Удаление обработчиков можно выполнять избирательно, что дает контроль над сложными интерфейсами:
function handler() { console.log('Клик'); }
$('#button').on('click', handler);
// удаление конкретного обработчика
$('#button').off('click', handler);
// удаление всех обработчиков
$('#button').off();
Cash позволяет динамически менять обработчики в зависимости от состояния приложения:
$('#toggle').on('click', function() {
$('#menu').off('mouseenter');
});
Такой подход упрощает управление интерфейсами с множеством состояний, сохраняя производительность.
Методы работы с событиями в Cash обеспечивают мощный и гибкий
инструмент для управления пользовательскими действиями. Простая, но
продуманная система on, off, one
и trigger позволяет создавать как легкие интерфейсы, так и
сложные динамические приложения с высокой производительностью.