Umbrella JS предоставляет лёгкий и компактный синтаксис для работы с
DOM, включая привязку и управление событиями. Основным методом для этого
является .on(), который позволяет навешивать обработчики на
выбранные элементы, аналогично addEventListener в чистом
JavaScript, но с удобной цепочкой вызовов и универсальной поддержкой
коллекций элементов.
Метод .on() имеет следующую базовую форму:
u('селектор').on('событие', function(event) {
// тело обработчика
});
Примеры:
u('button').on('click', function(e) {
console.log('Кнопка нажата');
});
Можно навешивать обработчики на несколько событий одновременно, перечисляя их через пробел:
u('input').on('focus blur', function(e) {
console.log('Фокус или потеря фокуса');
});
Для удаления обработчиков используется метод .off():
u('селектор').off('событие', функция);
Если функция не указана, все обработчики данного типа удаляются:
u('button').off('click'); // удаляет все клики с кнопок
Umbrella JS поддерживает делегирование событий через дополнительный
параметр селектор:
u('parent').on('click', 'child', function(e) {
console.log('Клик по дочернему элементу');
});
В этом случае обработчик вешается на родителя, но срабатывает только при взаимодействии с элементами, соответствующими указанному селектору. Это особенно полезно для динамически добавляемых элементов.
Umbrella JS предоставляет короткие методы для часто используемых событий:
.click(fn) — привязка события click.focus(fn) — событие focus.blur(fn) — событие blur.keydown(fn) — событие keydown.keyup(fn) — событие keyupПример использования:
u('input').focus(function() {
console.log('Поле ввода в фокусе');
});
Внутри функции обработчика this ссылается на текущий
DOM-элемент, а объект события передаётся как первый аргумент:
u('li').on('click', function(event) {
console.log(this); // сам элемент <li>
console.log(event.type); // тип события
});
Umbrella JS позволяет передавать дополнительные параметры в обработчик через объект данных:
u('button').on('click', { user: 'admin', id: 42 }, function(e) {
console.log(e.data.user); // 'admin'
});
Объект события event поддерживает стандартные
методы:
event.preventDefault() — предотвращает стандартное
поведение элементаevent.stopPropagation() — останавливает всплытие
событияu('a').on('click', function(e) {
e.preventDefault(); // ссылка не будет переходить
});
Методы .on() и .off() автоматически
применяются ко всем элементам, выбранным селектором:
u('li').on('mouseenter', function() {
this.style.backgroundColor = 'yellow';
});
Нет необходимости вручную перебирать элементы через циклы или
forEach, что делает код более компактным и читаемым.
При добавлении новых элементов в DOM после первоначальной привязки
событий обычный .on() без делегирования не будет работать.
Для таких случаев рекомендуется использовать делегирование через
родительский элемент:
u('#list').on('click', 'li', function() {
console.log('Клик по динамическому элементу списка');
});
Привязка событий часто используется в связке с методами манипуляции
DOM .addClass(), .removeClass(),
.toggleClass(), .html(), .text(),
.attr():
u('button').on('click', function() {
u(this).toggleClass('active');
u('#output').text('Состояние изменено');
});
Такой подход позволяет писать лаконичный код без необходимости
возвращаться к чистому querySelector или
addEventListener для каждого элемента.
Использование Umbrella JS упрощает работу с событиями, делает код лаконичным и универсальным для коллекций элементов, позволяя писать чистый и поддерживаемый JavaScript.