НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗jsPmOEBUs 428 of 505 menu

Применение прекращения всплытия событий в JavaScript

Пусть внутри одного родителя у нас есть кнопка и некоторый блок:

<div id="parent"> <button>click me</button> <div id="block"> text </div> </div>

Получим ссылки на наши элементы в переменные:

let parent = document.querySelector('#parent'); let button = document.querySelector('button'); let block = document.querySelector('#block');

Пусть наш блок изначально скрыт:

#block:not(.active) { display: none; }

Сделаем так, чтобы по клику на кнопку наш блок показался:

button.addEventListener('click', function() { block.classList.add('active'); });

А теперь сделаем так, чтобы по клику на любое место родителя наш блок скрывался:

parent.addEventListener('click', function() { block.classList.remove('active'); });

Нас, однако, ждет неожиданный сюрприз: так как кнопка находится внутри родителя, то клик по кнопке одновременно означает и клик по родителю. Это значит, что сначала наш блок покажется, а затем из-за всплытия события сработает обработчик в родителе и наш блок скроется.

Вот тут-то нам и пригодится возможность отменить всплытие: мы можем сделать так, чтобы при клике на кнопку отменить всплытие, родитель не реагировал на этот клик.

Самостоятельно реализуйте корректную работу описанной задачи.

Русский
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить