• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Czy eventlistener usuwa się wraz z elementem?

+1 głos
121 wizyt
pytanie zadane 25 marca 2021 w JavaScript przez Author[] Bywalec (2,970 p.)
zamknięte 25 marca 2021 przez Author[]
Czy metoda element.remove() usuwa również powiązane z nim event listenery?
komentarz zamknięcia: Otrzymałem rozwiązanie

2 odpowiedzi

+4 głosów
odpowiedź 25 marca 2021 przez Comandeer Guru (579,080 p.)
wybrane 25 marca 2021 przez Author[]
 
Najlepsza

Nie. To tak naprawdę następuje dopiero, gdy element jest zbierany przez garbage collectora – czyli gdy nie istnieje żadna referencja do niego (nie robisz z nim nic ani nie masz go zapisanego w żadnej zmiennej).

element.remove usuwa element z drzewa DOM, ale dalej da się na nim odpalić zdarzenia.

komentarz 25 marca 2021 przez Author[] Bywalec (2,970 p.)
Czy w takim razie istnieje metoda żeby usunąć wszystkie eventListenery elementu?

Wiem o element.removeEventListener(), jednak element ma dynamicznie przydzielane listenery przez co pojedyncze usuwanie byłoby dość kłopotliwe
1
komentarz 25 marca 2021 przez Comandeer Guru (579,080 p.)

Tak, istnieje, wykorzystanie AbortSignal. Dzięki niemu można usunąć kilka listenerów naraz. Jedyny problem może być ze wsparciem w przeglądarkach. Na pewno działa to w Chrome.

komentarz 25 marca 2021 przez Author[] Bywalec (2,970 p.)
Dziękuję!
+1 głos
odpowiedź 25 marca 2021 przez Wiciorny Ekspert (237,450 p.)

Zależy jak event jest nałożony na element, czy na bazie selektora klasy, czy onClicka jakiegoś, bo jeśli jest on wywoływany z innego elementu np. to w momencie usunięcia, będzie  to wywoływanie metody na obiekcie którego nie ma i wtedy będzie błąd.
Zależy to  od implementacji

Więc tak jak tutaj podsumowanie- referencja musi być zwolniona. 

In modern browsers, if a DOM Element is removed, its listeners are also removed from memory in javascript.

Note that this will happen ONLY if the element is reference-free. Or in other words, it doesn't have any reference and can be garbage collected. Only then its event listeners will be removed from memory.

komentarz 25 marca 2021 przez Author[] Bywalec (2,970 p.)
Czy działa to także w wypadku eventów utworzonych z CustomEvent ?

Podobne pytania

0 głosów
1 odpowiedź 128 wizyt
0 głosów
1 odpowiedź 113 wizyt
pytanie zadane 17 sierpnia 2021 w JavaScript przez MarCiu Nowicjusz (160 p.)
+1 głos
1 odpowiedź 85 wizyt
pytanie zadane 31 stycznia 2021 w JavaScript przez Author[] Bywalec (2,970 p.)

89,693 zapytań

138,297 odpowiedzi

309,243 komentarzy

59,623 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...