Библиотека Cash предоставляет компактный и эффективный способ работы с DOM, вдохновлённый jQuery. Одной из её мощных возможностей является работа с пользовательскими событиями — механизмом, позволяющим создавать и обрабатывать события, не ограничиваясь стандартными событиями браузера.
В Cash привязка событий осуществляется с помощью метода
.on(). Для пользовательских событий синтаксис полностью
аналогичен стандартным:
const $element = $('#myElement');
// Привязка пользовательского события 'customEvent'
$element.on('customEvent', function(event, data) {
console.log('Пользовательское событие сработало', data);
});
Для генерации пользовательских событий используется метод
.trigger(). Он позволяет активировать любое событие на
выбранных элементах:
$element.trigger('customEvent', { key: 'value' });
При этом обработчик, привязанный к событию customEvent,
получит объект { key: 'value' } как второй аргумент.
Cash позволяет передавать произвольные данные при вызове события, что особенно удобно для передачи состояния или параметров:
$element.on('updateStatus', function(event, status) {
console.log(`Статус обновлён: ${status}`);
});
$element.trigger('updateStatus', 'active');
В данном примере строка 'active' передаётся напрямую в
обработчик, обеспечивая гибкость при работе с динамическими данными.
Метод .on() поддерживает делегирование
событий, что позволяет назначать обработчики на родительские
элементы, а реагировать на события дочерних:
$('#parent').on('customClick', '.child', function(event) {
console.log('Дочерний элемент был активирован');
});
Такой подход особенно эффективен при динамическом создании элементов, поскольку обработчики будут работать с элементами, добавленными в DOM после инициализации.
Для снятия обработчиков используется метод .off(). Он
может удалять конкретное событие или все события на элементе:
$element.off('customEvent'); // удаляет все обработчики 'customEvent'
$element.off(); // удаляет все события на элементе
Если был указан конкретный селектор при делегировании,
.off() также поддерживает его:
$('#parent').off('customClick', '.child');
thisВ обработчиках событий, привязанных через Cash, this
всегда ссылается на элемент, на котором произошло событие:
$element.on('customEvent', function() {
console.log(this.id); // ID элемента, на котором сработало событие
});
Это упрощает работу с DOM без необходимости использовать внешние ссылки на элементы.
Cash предоставляет несколько полезных возможностей для управления пользовательскими событиями:
.one(event, handler) — привязывает обработчик так,
чтобы он сработал только один раз.$element.one('customEvent', function() {
console.log('Сработало один раз');
});
.triggerHandler(event, data) — запускает событие только
на первом элементе выборки и не инициирует всплытие. Используется для
локальных событий, когда не требуется воздействие на родительские
элементы.const result = $element.triggerHandler('customEvent', { value: 42 });
Пользовательские события можно комбинировать с нативными событиями браузера:
$element.on('click customEvent', function(event) {
if (event.type === 'click') {
console.log('Клик по элементу');
} else if (event.type === 'customEvent') {
console.log('Пользовательское событие');
}
});
Такой подход позволяет обрабатывать сразу несколько источников событий одним обработчиком, минимизируя дублирование кода.
.triggerHandler() для
локальных событий, когда всплытие не нужно.Пользовательские события в Cash создают лёгкий и гибкий способ управления взаимодействием элементов, обеспечивая компактный и понятный синтаксис для сложных динамических интерфейсов.