Zepto.js предоставляет компактный и гибкий интерфейс для работы с DOM, включая систему событий, которая во многом повторяет подход jQuery, но с минимальным размером кода. Тестирование событий в Zepto требует понимания как базовой подписки на события, так и динамического делегирования.
Основной метод подписки — это
.on(event, selector, handler).
$('#button').on('click', function(event) {
console.log('Кнопка нажата');
});
Ключевые моменты:
event — строка с названием события (click,
mouseover, keyup и т.д.).selector — необязательный параметр для делегирования
событий на потомков.handler — функция-обработчик события, принимающая
объект event.Аналогично работает метод .bind(event, handler), который
является более старым вариантом:
$('#button').bind('click', function() {
console.log('Кнопка нажата (bind)');
});
Для удаления обработчиков используется
.off(event, handler):
function handleClick() {
console.log('Обработчик отключён');
}
$('#button').on('click', handleClick);
// ...
$('#button').off('click', handleClick);
Делегирование позволяет обрабатывать события для элементов, которые
могут появиться в DOM позже. В Zepto это реализуется через передачу
селектора в .on():
$('#list').on('click', 'li', function() {
console.log('Элемент списка кликнут');
});
Особенности делегирования:
#list),
а обработчик вызывается для дочерних элементов, соответствующих
селектору (li).Для тестирования событий удобно использовать метод
.trigger(event, [data]):
$('#button').on('click', function(e, customData) {
console.log('Симулированный клик', customData);
});
$('#button').trigger('click', { test: 123 });
Особенности:
event может быть строкой или объектом события
(new $.Event('click')).[data] — дополнительные данные, которые будут переданы
обработчику.Объект события в Zepto содержит ключевые свойства:
type — тип события (click,
keydown и т.д.).target — элемент, на котором произошло событие.currentTarget — элемент, на котором сработал
обработчик.preventDefault() — предотвращает стандартное
поведение.stopPropagation() — останавливает всплытие
события.Пример использования:
$('#link').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
console.log('Событие перехвачено');
});
Zepto позволяет создавать и подписываться на собственные события:
$('#box').on('customEvent', function(e, value) {
console.log('Custom event triggered with', value);
});
$('#box').trigger('customEvent', 42);
Преимущества:
Для интерактивных элементов формы поддерживаются стандартные события:
$('#input').on('input change', function(e) {
console.log('Новое значение:', $(this).val());
});
input — срабатывает при каждом изменении значения.change — срабатывает при потере фокуса после
изменения.Zepto поддерживает все стандартные события мыши (click,
dblclick, mouseenter, mouseleave)
и клавиатуры (keydown, keyup,
keypress).
$(document).on('keydown', function(e) {
if (e.key === 'Enter') {
console.log('Нажата клавиша Enter');
}
});
key или
keyCode.Для unit-тестирования событий в Zepto часто используют имитацию действий:
function simulateClick(selector) {
$(selector).trigger('click');
}
simulateClick('#button');
.on() и .off() — основной инструмент
управления событиями..trigger() используется для имитации и тестирования
событий.event, позволяющим
контролировать поведение и всплытие.Эти механизмы создают основу для тестирования событийных сценариев и позволяют строить надёжные интерактивные интерфейсы с минимальным объемом кода.