В Zepto события играют ключевую роль в управлении интерактивностью
веб-страниц. Помимо стандартного отслеживания событий с помощью
on и off, библиотека предоставляет возможность
ручного вызова событий на выбранных элементах, что
позволяет программно инициировать поведение, аналогичное действию
пользователя.
triggerМетод trigger используется для генерации события на
одном или нескольких элементах. Синтаксис:
$(селектор).trigger(типСобытия, [данные]);
типСобытия — строка с именем события, например
"click" или "customEvent".[данные] — необязательный аргумент. Массив значений,
который будет передан обработчикам события.Пример:
$('#button').on('click', function(event, message) {
console.log('Кнопка нажата!', message);
});
$('#button').trigger('click', ['Привет, Zepto!']);
В этом примере событие click инициируется программно, и
обработчик получает дополнительный аргумент message.
Особенности trigger:
triggerHandlerМетод triggerHandler похож на trigger, но
имеет несколько отличий:
Синтаксис:
$(селектор).triggerHandler(типСобытия, [данные]);
Пример использования:
$('#input').on('change', function(event, extra) {
console.log('Изменение значения', extra);
return 'результат';
});
var result = $('#input').triggerHandler('change', ['дополнительно']);
console.log(result); // 'результат'
triggerHandler часто применяется, когда важно
выполнить событие локально, не затрагивая остальную
структуру DOM.
Zepto позволяет создавать события с любым названием. Это удобно для организации внутренней логики модулей и компонентов.
$('#box').on('highlight', function(event, color) {
$(this).css('background-color', color);
});
$('#box').trigger('highlight', ['yellow']);
Здесь событие highlight не существует в стандартном
наборе DOM, но может быть вызвано и обработано так же, как нативное
событие.
При ручном вызове события можно передавать любые дополнительные параметры, которые будут доступны в обработчике через аргументы после объекта события:
$('#menu').on('open', function(e, user, time) {
console.log(user + ' открыл меню в ' + time);
});
$('#menu').trigger('open', ['Иван', '12:00']);
Это позволяет использовать события как механизм передачи данных между различными частями кода.
Методы trigger и triggerHandler работают
как с нативными DOM-событиями (click, submit),
так и с пользовательскими. Важно учитывать:
trigger инициирует полное событие с всплытием и
обработкой по всему дереву DOM.triggerHandler вызывает только локальные
обработчики на конкретном элементе.Это различие критично при организации сложных интерфейсов, где нежелательно распространение событий на родительские элементы.
Ручной вызов событий органично интегрируется с методами:
on и off для добавления и удаления
обработчиков.one для разового выполнения.$('.item.active').trigger('update', [{field: 'status', value: 'ready'}]);
trigger.triggerHandler.Эффективное использование ручного вызова событий в Zepto позволяет строить гибкую архитектуру клиентского кода, улучшает модульность и управляемость интерфейсов.