В JavaScript любое событие, происходящее на элементе DOM, проходит через две основные фазы: фазу захвата и фазу всплытия. Bliss.js строится поверх нативного API событий и предоставляет удобные методы для управления этими фазами.
Всплытие (bubbling) — это процесс, когда событие,
возникшее на вложенном элементе, передается вверх по дереву DOM к
родительским элементам. По умолчанию большинство событий, таких как
click, keyup или submit,
всплывают.
Пример использования Bliss.js для обработки события клика:
var btn = Bliss.$('#button');
btn.on('click', function(event) {
console.log('Клик по кнопке');
});
В данном примере событие клика можно перехватить и на родительском элементе:
var container = Bliss.$('#container');
container.on('click', function(event) {
console.log('Клик внутри контейнера');
});
Если кнопка находится внутри контейнера, сначала сработает обработчик на кнопке, а затем — на контейнере. Это демонстрирует стандартное всплытие событий.
Bliss.js предоставляет удобный синтаксис для остановки
всплытия события с помощью методов stop() и
preventDefault().
btn.on('click', function(event) {
event.stop(); // предотвращает дальнейшее всплытие
console.log('Всплытие остановлено на кнопке');
});
event.stop() полностью останавливает передачу события
вверх по дереву DOM.event.preventDefault() предотвращает стандартное
действие браузера для данного события, например, переход по ссылке или
отправку формы.Комбинация этих методов позволяет точно управлять поведением событий и создавать сложные интерактивные интерфейсы без конфликтов между обработчиками.
Bliss.js облегчает реализацию делегирования событий через селекторы. Это особенно полезно при динамическом создании элементов, когда добавление обработчиков к каждому элементу неудобно.
Bliss.$('#container').on('click', 'button', function(event) {
console.log('Клик по кнопке внутри контейнера');
});
on — тип события.Такой подход минимизирует количество обработчиков и улучшает производительность при большом числе элементов.
Bliss.js позволяет добавлять несколько обработчиков на один элемент для одного события:
btn.on('click', function() {
console.log('Первый обработчик');
});
btn.on('click', function() {
console.log('Второй обработчик');
});
Обработчики срабатывают в порядке их регистрации.
Если один из них вызывает event.stop(), последующие
обработчики на том же элементе не выполняются.
Bliss.js поддерживает работу со всеми стандартными событиями, включая:
input, change — для текстовых полей и
селекторовfocus, blur — для управления фокусомsubmit — для формBliss.$('form').on('submit', function(event) {
event.preventDefault(); // отменяет стандартную отправку формы
console.log('Форма обработана программно');
});
Для событий, не всплывающих по умолчанию (focus,
blur), Bliss.js автоматически использует делегирование или
привязку к каждому элементу, обеспечивая единый интерфейс работы
с событиями.
Bliss.js расширяет возможности стандартного API событий через методы:
once() — срабатывание обработчика только один
раз:btn.once('click', function() {
console.log('Событие сработало один раз');
});
off() — удаление обработчика:btn.off('click');
btn.on('mouseenter', highlight)
.on('mouseleave', unhighlight);
Эта система позволяет строить чистый и предсказуемый код, минимизируя побочные эффекты при работе с DOM.
preventDefault и
stop для точного контроля над поведением
интерфейса.once() для одноразовых
действий, экономя память и предотвращая дублирование.Bliss.js превращает стандартную работу с событиями в интуитивно понятный и лаконичный процесс, объединяя мощь нативного API с удобным синтаксисом.