⊗jsPmOEBUs 428 of 505 menu

Zastosowanie zapobiegania propagacji zdarzeń w JavaScript

Załóżmy, że wewnątrz jednego rodzica mamy przycisk i pewien blok:

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

Pobierzmy referencje do naszych elementów do zmiennych:

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

Załóżmy, że nasz blok jest początkowo ukryty:

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

Sprawmy, aby po kliknięciu przycisku nasz blok został pokazany:

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

A teraz sprawmy, aby po kliknięciu w dowolne miejsce rodzica nasz blok został ukryty:

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

Czeka nas jednak niespodzianka: ponieważ przycisk znajduje się wewnątrz rodzica, kliknięcie przycisku jednocześnie oznacza kliknięcie rodzica. Oznacza to, że najpierw nasz blok się pokaże, a następnie z powodu propagacji zdarzenia uruchomi się procedura obsługi w rodzicu i nasz blok się ukryje.

Tutaj przyda nam się możliwość anulowania propagacji: możemy sprawić, że przy kliknięciu przycisku anulujemy propagację, rodzic nie zareaguje na to kliknięcie.

Samodzielnie zaimplementuj poprawne działanie opisanego zadania.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć