Witam. Czy mógłbym mieć tą przyjemność i poprosić Was o wytłumaczenie w nurtującej mnie kwestii odnośnie JS/jQuery? Chciałbym się dowiedzieć o co chodzi z propagacją zdarzeń w JS/jQuery. Chciałbym się dowiedzieć kiedy stosujemy preventDefault, kiedy stopPrepagination a kiedy return. Czy mogę liczyć na Twoje objaśnienie i ewentualne podesłąnie do polsko języcznych materiałów na ten temat?
Propagacja zdarzeń, to tzw. bąbelkowa obsługa zdarzeń. Wyobraź sobie butelkę piwa, gdzie bąbelek leci od samego dna po kapsel. Identycznie działa obsługa zdarzeń JS w przeglądarkach.
Najprostszy przykład: masz 4 divy i one zagnieżdżają się w sobie. Na każdego diva masz zapięte jakieś tam zdarzenie na click’a. Po cyknięciu w środek tych zagnieżdżonych divów, przeglądarka tworzy jakby “bąbelek” zdarzeniowy, który leci od najbardziej zagnieżdżonego elementu w kierunku samej góry. Czyli po tym jednym kliku, bąbelek wywoła wszystkie zdarzenia click elementów, które napotka na swojej drodze, czyli w moim przykładzie tych 4 divów.
preventDefault, stopPrepagination i return są ściśle powiązane z “bąbelkowaniem”
preventDefault
Nie wykonuje (anuluje) domyślnego zdarzenia dla danego elementu. Zazwyczaj stosuje się gdy masz zapięte zdarzenie click na elemencie . Po kliknięciu na wykonuje się Twoje zdarzenie i gdy parser napotka preventDefault nie wykonuje domyślnej akcji dla czyli nie zostanie wykonane przejście do URL’a, którego masz w “href” tego .
stopPrepagination
Po prostu zatrzymuje bąbelkowanie :). Czyli w powyższym moim przykładzie 4 divów. Gdy dodasz do 2go diva w obsłudze zdarzenia stopPrepagination bąbelek nie pójdzie już w górę (zatrzymuje się) i zdarzenia dla pozostałych 2 divów w ogóle “nie zaskoczą”.
return
To dosłownie połączenie preventDefault + stopPrepagination. Czyli return zatrzymuje bąbelkowanie i anuluje dalsze domyślne zdarzenia.