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

Zdarzenie On Click nie działa po załadowaniu elementu przez ajax

Object Storage Arubacloud
0 głosów
336 wizyt
pytanie zadane 16 czerwca 2018 w JavaScript przez mordimer Mądrala (5,720 p.)

Witam wykonuje pewna akcje przy użyciu ajaxa :

document.querySelectorAll('.ajax-link').forEach(function (item) {
        item.addEventListener('click', function (e) {
            e.preventDefault();
            //jakas akcja przy użyciu ajaxa
        });
});

Wszystko fajnie pobiera lecz po załadowaniu danych ajaxem i kliknieciu na daną klasę nie pobiera mi tych elementów załadowanych ajaxem. W jquery rozwiązaniem tego problemu było coś takiego :

$('body').on('click', '.ajax-link', function(e) {
       e.preventDefault();
       //jakas akcja przy użyciu ajaxa
});

Teraz pytanie jak zrobić  coś takiego w czystym javascript ?

komentarz 17 czerwca 2018 przez ScriptyChris Mędrzec (190,190 p.)

Odpowiedź już dostałeś. Ja dopowiem, że Twój kod z użyciem querySelectorAll + forEach na zwróconej kolekcji nie obejmuje nowych elementów pobranych przez Ajax, ponieważ querySelectorAll zwraca statyczną kolekcję, czyli taką która znajduje się w DOM w momencie jej odczytu/szukania. Twój kod powinien działać z użyciem document.getElementsByClassName, ponieważ ona zwraca żywą listę node'ów, czyli taką którą aktualizuje się, gdy zmieniasz coś w DOM nawet po użyciu tej metody.

1 odpowiedź

+1 głos
odpowiedź 16 czerwca 2018 przez ProgramistaStepek Nałogowiec (27,020 p.)

Poczytaj o event delegation

komentarz 16 czerwca 2018 przez mordimer Mądrala (5,720 p.)

Dzięki zrobiłem coś takiego:

body.addEventListener('click', function (e) {
        e.preventDefault();
        if (e.target.classList.contains("ajax-link")){
                 //jakas akcja
        }
});

i działa :)

komentarz 16 czerwca 2018 przez ProgramistaStepek Nałogowiec (27,020 p.)
To fajnie, że zrozumiałeś, to przydatna technika :)

Podobne pytania

0 głosów
0 odpowiedzi 323 wizyt
pytanie zadane 5 marca 2022 w JavaScript przez Us Użytkownik (880 p.)
0 głosów
2 odpowiedzi 190 wizyt
0 głosów
1 odpowiedź 84 wizyt
pytanie zadane 8 października 2018 w JavaScript przez Bakr Mądrala (6,850 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...