Jak prawidłowo zatrzymać propagację zdarzenia w JavaScript?

W świecie JavaScript, zdarzenia są podstawowym sposobem interakcji użytkownika z aplikacją. Często zdarza się, że zdarzenia są zagnieżdżone – na przykład kliknięcie przycisku umieszczonego wewnątrz diva. Domyślnie, zdarzenie będzie “bąblować” w górę przez drzewo DOM, od elementu najbardziej zagnieżdżonego, do korzenia dokumentu. W niektórych przypadkach, chcielibyśmy zatrzymać tę propagację, aby zdarzenie nie było obsługiwane przez elementy nadrzędne. W tej lekcji pokażemy, jak to zrobić.

Przykład zatrzymania propagacji zdarzenia

Załóżmy, że mamy prosty formularz HTML z przyciskiem, który znajduje się wewnątrz elementu <div>. Chcemy obsłużyć kliknięcie przycisku, ale nie chcemy, aby zdarzenie kliknięcia propagowało się poza przycisk.

Kod HTML i JavaScript
<!DOCTYPE html>
<html>
<head>
    <title>Zatrzymanie propagacji zdarzenia</title>
</head>
<body>

<div id="divContainer" style="padding: 20px; border: 1px solid #000;">
    <!-- Div zawierający przycisk -->
    <button id="myButton">Kliknij mnie</button>
    <!-- Przycisk do kliknięcia -->
</div>

<script>
// Funkcja obsługująca kliknięcie przycisku
document.getElementById('myButton')
  .addEventListener('click', function(event) {
    alert('Przycisk został kliknięty!');
    // Zatrzymanie propagacji zdarzenia
    event.stopPropagation();
});

// Funkcja obsługująca kliknięcie na div
document.getElementById('divContainer')
  .addEventListener('click', function() {
    alert('Kliknięto div!');
});
</script>

</body>
</html>

W powyższym kodzie, mamy dwa elementy: <div> i <button>. Do obu tych elementów dodaliśmy nasłuchiwanie zdarzeń kliknięcia. Dla przycisku, wewnątrz funkcji obsługującej zdarzenie, używamy event.stopPropagation(), aby zatrzymać propagację zdarzenia. Oznacza to, że po kliknięciu przycisku, zobaczymy tylko alert “Przycisk został kliknięty!” i zdarzenie nie będzie dalej propagowane do elementu <div>, co zapobiegnie wyświetleniu alertu “Kliknięto div!”.

Podsumowanie

Zatrzymanie propagacji zdarzeń w JavaScript jest ważną techniką, która pozwala na kontrolowanie zachowania zdarzeń w aplikacji. Dzięki event.stopPropagation(), można łatwo zapobiec niespodziewanemu zachowaniu, które mogłoby wystąpić w wyniku bąbelkowania zdarzeń w drzewie DOM. Jest to szczególnie przydatne w złożonych interfejsach użytkownika, gdzie wiele zdarzeń jest obsługiwanych na różnych poziomach zagnieżdżenia.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top