Umbrella JS предоставляет легкий и интуитивный способ работы с DOM, включая обработку событий мыши. Основная цель библиотеки — упростить добавление, удаление и управление событиями, делая код более компактным и читаемым.
Для добавления события к элементам используется метод
on(). Он принимает два обязательных аргумента: тип события
и функцию-обработчик.
u('button').on('click', function(event) {
console.log('Кнопка нажата');
});
Особенности:
event — объект события, предоставляющий доступ к
целевому элементу (event.target), координатам курсора
(event.clientX, event.clientY) и другим
стандартным свойствам.Umbrella JS поддерживает все стандартные события мыши:
click — одиночное нажатие кнопки мыши.dblclick — двойной клик.mousedown — нажатие кнопки мыши.mouseup — отпускание кнопки мыши.mousemove — движение мыши над элементом.mouseenter и mouseleave — курсор входит
или покидает границы элемента.mouseover и mouseout — аналогично, но с
учетом вложенных элементов.Пример использования нескольких событий:
u('.box').on('mouseenter', function() {
this.css('background', 'lightblue');
}).on('mouseleave', function() {
this.css('background', '');
});
Метод off() позволяет удалять ранее привязанные события.
Аргументы совпадают с on().
function highlight() {
this.css('border', '2px solid red');
}
u('.item').on('mouseover', highlight);
// Удаление обработчика
u('.item').off('mouseover', highlight);
Если обработчик не указан, off() удаляет все события
указанного типа для выбранных элементов.
Umbrella JS поддерживает делегирование через селекторы. Это позволяет привязывать обработчики к родительскому элементу и отслеживать события на дочерних элементах.
u('#list').on('click', 'li', function(event) {
this.toggleClass('active');
});
Преимущества делегирования:
Объект события содержит подробную информацию о позиции курсора и кнопке мыши:
u('div').on('click', function(e) {
console.log('Координаты: X=' + e.clientX + ', Y=' + e.clientY);
console.log('Кнопка: ' + e.button); // 0 — левая, 1 — средняя, 2 — правая
});
Метод preventDefault() предотвращает стандартное
действие браузера (например, контекстное меню при правом клике), а
stopPropagation() останавливает всплытие события.
Umbrella JS обрабатывает события с обычным механизмом DOM — всплытие
(bubbling). Для использования захвата необходимо указать третий аргумент
в on():
u('div').on('click', function() {
console.log('Захват события');
}, true); // true — использование фазы захвата
let dragging = false;
u('.draggable')
.on('mousedown', function() { dragging = true; })
.on('mouseup', function() { dragging = false; })
.on('mousemove', function(e) {
if (dragging) {
this.css({
left: e.clientX + 'px',
top: e.clientY + 'px',
position: 'absolute'
});
}
});
u('.menu-target').on('contextmenu', function(e) {
e.preventDefault();
u('#custom-menu').css({ top: e.clientY + 'px', left: e.clientX + 'px', display: 'block' });
});
u('.hover-box').on('mouseenter', function() {
this.css('background', 'yellow');
}).on('mouseleave', function() {
this.css('background', 'white');
});
Umbrella JS позволяет объединять несколько обработчиков и действий через цепочку вызовов:
u('button')
.on('mouseenter', function() { this.css('color', 'red'); })
.on('mouseleave', function() { this.css('color', ''); })
.on('click', function() { alert('Нажато'); });
Это делает код компактным и структурированным, особенно при работе с большим количеством элементов и событий.
Umbrella JS минимизирует накладные расходы на обработку событий, обрабатывая их через внутренние оптимизации. Все методы работают во всех современных браузерах и корректно поддерживают мобильные устройства с сенсорными событиями (через полифиллы или расширения).