В веб-разработке события играют важную роль. От кликов мыши до отправки форм, события позволяют взаимодействовать с веб-страницей. Для обработки событий в JavaScript используются методы и свойства, но также существует два важных концепта: отмена (cancellation) и всплытие (bubbling) событий. В данной статье мы подробно рассмотрим эти концепции, их влияние на обработку событий и приведем практические примеры.
Отмена события
Отмена события (event cancellation) – это механизм предотвращения действия при клике. Это достигается с помощью метода `preventDefault()` объекта события (Event).
Пример:
| «`javascript
// HTML <a href=»https://www.example.com» id=»link»>Ссылка</a> // JavaScript document.getElementById(«link»).addEventListener(«click», function(event) { event.preventDefault(); // Отменяем переход по ссылке alert(«Ссылка была нажата, но переход отменен.»); }); «` |
`preventDefault()` здесь отменяет переход по ссылке.

- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросети DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
- Где и как применять? Потестируем модель после установки на разных задачах
- Как дообучить модель под себя?
Всплытие событий
Всплытие событий (event bubbling) – это когда событие поднимается снизу вверх в иерархии DOM (Document Object Model). Этот процесс продолжается до тех пор, пока не достигнет корневого элемента документа.
Пример:
| «`html
<div id=»parent»> <button id=»child»>Нажми меня</button> </div> «` |
| «`javascript
document.getElementById(«parent»).addEventListener(«click», function() { alert(«Родительский элемент»); }); document.getElementById(«child»).addEventListener(«click», function() { alert(«Дочерний»); }); «` |
При клике на кнопку «Нажми меня» обработчик вызывается сначала на дочернем, а потом на родительском элементе.
Остановка всплытия событий
Иногда требуется остановить всплытие на определенном этапе. Для этого можно использовать метод `stopPropagation()` объекта. Этот метод предотвращает дальнейшее всплытие после вызова.
Пример:
| «`javascript
document.getElementById(«child»).addEventListener(«click», function(event) { event.stopPropagation(); // Останавливаем всплытие alert(«Событие на дочернем элементе»); }); «` |
В данном примере при клике на кнопку «Нажми меня» событие не будет всплывать до родительского элемента благодаря `stopPropagation()`.
Использование отмены и всплытия вместе
Одновременно они могут использоваться вместе для более сложной логики обработки событий. Например, вы можете отменить стандартное действие и затем явно вызвать всплытие для других обработчиков.
Пример:
| «`html
<button id=»myButton»>Нажми меня</button> «` |
| «`javascript
document.getElementById(«myButton»).addEventListener(«click», function(event) { event.preventDefault(); // Отменяем стандартное действие alert(«Действие кнопки было отменено»); // Явно вызываем всплытие event.target.dispatchEvent(new Event(«customclick», { bubbles: true })); }); document.body.addEventListener(«customclick», function() { alert(«Событие на body после отмены»); }); «` |
В этом примере мы отменяем стандартное действие клика по кнопке и затем явно вызываем всплытие события «customclick». Это событие будет всплывать до корневого элемента документа, и на body сработает соответствующий обработчик.
Заключение
Понимание механизмов отмены и всплытия важно для эффективной обработки событий в веб-разработке. Отмена позволяет контролировать стандартные действия, связанные с действиями, а всплытие дает возможность управлять порядком обработки на разных уровнях иерархии DOM. Комбинирование этих концепций позволяет создавать более гибкие и мощные приложения веб-разработки.
- Освой нейросеть Perplexity и узнай, как пользоваться функционалом остальных ИИ в одном
- УЧАСТВОВАТЬ ЗА 0 РУБ.
- Расскажем, как получить подписку
- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросеть DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ