Что такое распространение событий? Распространение событий определяет, в каком порядке элементы получают событие.
Я знаю, что большинство из вас ничего не понимает из этого определения Распространения Событий. Но нет проблем, мы разберем это на примерах. Забудьте о распространении событий сейчас.
Теперь мы узнаем, что такое пузырьковое воспроизведение событий? Когда у нас есть родительский и дочерний элементы в коде, и все они активируются для события, то, если вы инициируете дочернее событие, родительское событие запускается автоматически. Допустим, у нас есть родитель div
и дочерний элемент div
. У них обоих есть событие click
. Теперь, если вы нажмете на дочерний div, родительский div щелкнет автоматически.
Вы будете более ясны в этой концепции с примерами. Мы создадим три элемента div с идентификатором в файле HTML и запишем события щелчка в файле javascript.
Теперь создайте файлы HTML
и js
.
Теперь запустите в браузере. Вывод будет таким.
Настоящее волшебство начинается сейчас. Нажмите на предложение Click child
и проверьте консоль. Попробуй тут понять, ты просто нажимаешь на Click child
, а Click father
и Click grandfather
тоже печатаются в консоли. Если вы снова посмотрите на консоль, вы увидите иерархию от дочернего к родительскому.
Это Event Bubbling
в javascript. Теперь, если вы нажмете на предложение Click on father
, что должно произойти?
да. ты прав. печатаются click on father
, затем click on grandfather
.
Запись событий. Теперь посмотрите на файл event.js
. Просто добавьте один логический элемент true
во все события.
Теперь нажмите на предложение click child
. Вы получаете результат, противоположный предыдущему выводу.
Event capturing
поддерживает иерархию от родителя к дочернему элементу.
Теперь у вас возникает вопрос, а что, если вы изменили все значения true
на false? Затем он ведет себя как всплывающее событие. Вы можете попробовать это.
Что, если я изменю значение true
на false
? Подумайте, какой может быть выход?
Какие значения равны true
, они ведут себя как event capturing
, а какие значения false
ведут себя как event bubbling
.
Теперь, как остановить этот цикл событий. Вы можете использовать e.stopPropagation()
. Если вы используете это в первом событии, таком как дочернее событие для event bubbling
и родительское событие для event capturing
, то запускается только первое событие.
Всплывание событий и захват событий являются распространением событий.
Первоначально опубликовано на https://sahedthought.hashnode.dev.