В Zepto, как и в других библиотечных обёртках для работы с DOM,
управление событиями реализовано с помощью метода .on(),
который поддерживает пространства имен событий.
Пространства имен позволяют структурировать обработчики, делать код
более предсказуемым и легко управляемым при добавлении или удалении
событий.
Событие в Zepto может быть привязано с указанием пространства имен через точку:
$('button').on('click.myNamespace', function() {
console.log('Клик в пространстве myNamespace');
});
click — тип события (например, click,
mouseover, keydown).myNamespace — имя пространства, произвольная строка без
пробелов.Использование пространств имен не меняет стандартное поведение события, но позволяет управлять обработчиками более избирательно.
ui, а события аналитики — как
analytics:$('#form').on('submit.ui', function() { /* логика UI */ });
$('#form').on('submit.analytics', function() { /* отправка данных */ });
// Удаляет все обработчики в пространстве ui
$('#form').off('.ui');
// Удаляет только обработчик клика в пространстве analytics
$('#form').off('click.analytics');
Zepto поддерживает указание нескольких пространств имен для одного события. Их разделяют точкой:
$('#menu').on('mouseenter.ui.navigation', function() {
console.log('Наведение с пространствами ui и navigation');
});
$('#menu').off('.ui'); // Удаляет все обработчики, относящиеся к ui
$('#menu').off('.navigation'); // Удаляет обработчики navigation
Zepto позволяет использовать только пространство имен без указания типа события. В этом случае управление становится универсальным:
$('#item').on('.tracker', function() {
console.log('Событие без явного типа');
});
// Удаление всех событий в пространстве tracker
$('#item').off('.tracker');
Этот подход особенно удобен для модульного кода, где может быть неизвестно, какие конкретно события будут использоваться.
При сложных интерфейсах, когда один элемент обрабатывает множество типов событий, пространства имен позволяют управлять ими выборочно:
$('#slider')
.on('mousedown.ui drag.ui', function() { console.log('Взаимодействие с слайдером'); })
.on('mousedown.analytics drag.analytics', function() { console.log('События для аналитики'); });
mousedown,
drag) используется для разных целей.analytics не
затронет обработчики в пространстве ui.module.ui.component; каждая
точка воспринимается как разделитель имен, но логики вложенности
библиотека не реализует.ui,
analytics, formValidation)..off() с
указанием пространства имени вместо удаления всех событий на
элементе.Пространства имен в Zepto делают работу с событиями структурированной, безопасной и управляемой, особенно в крупных интерфейсах с множеством взаимодействий. Они позволяют разделять логику, избегать конфликтов и облегчать поддержку кода при росте проекта.