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

Aktualizacja listy uzyskanej z querySelectorAll()

Object Storage Arubacloud
0 głosów
251 wizyt
pytanie zadane 28 lutego 2020 w JavaScript przez Suchy22 Nowicjusz (120 p.)

Jak moge zaktualizować listę uzyskaną poprzez querySelectorAll() ? 

Część contentu na stronie pojawia sie po klikniecu pewnych elementwó za pomocą js/jQuery,

Niestety poniższy kod działą tylko dla załadowanych elementów, 

na elementy dodawane dynamicznie nie reaguje, 

 

var catalogs = document.querySelectorAll("[data-src]");
for (var catalog of catalogs) {
    $(catalog).on('click', function () {
        console.log(this);
        $.ajax({
            type: "GET",
            url: $(this).attr("data-src"),
            data: $(this).val(),
            success: function (data) {
                $($(catalog).attr("data-trg")).html(data);
            }
        });
    });
}

próbowałem juz stworzyc tablice i na niej działąć ale nie pomogło 

var catalogs = [];
catalogs= $("[data-src]");

for (var catalog of catalogs) {
    $(catalog).on('click', function () {
       catalogs= $("[data-src]");
        console.log(this);
        $.ajax({
            type: "GET",
            url: $(this).attr("data-src"),
            data: $(this).val(),
            success: function (data) {
                $($(catalog).attr("data-trg")).html(data);
            }
        });
    });
}

metody .push(), .add() też nie pomagają 

 

Jakieś pomysły? 

komentarz 28 lutego 2020 przez JakSky Stary wyjadacz (14,770 p.)
Ja bym wywołał na nowo zapytanie querySelectorAll.
komentarz 28 lutego 2020 przez Suchy22 Nowicjusz (120 p.)
w jaki sposób?

próbowałem catalogs = document.querySelectorAll("[data-src]");

Ale funkcja dalej nie reaguje,

 

Lista się aktualizuje, ale funkcja po kliknieciu w dany element nie reaguje,

Dodatkowo lista na elementy dodane, po klikniecu na nie, w konsoli zwraca:
Node cannot be found in the current page.
komentarz 28 lutego 2020 przez JakSky Stary wyjadacz (14,770 p.)
komentarz 28 lutego 2020 przez Comandeer Guru (601,110 p.)

Po co MutationObserver? O.o

2 odpowiedzi

+1 głos
odpowiedź 28 lutego 2020 przez Comandeer Guru (601,110 p.)

Hasło-klucz: event delegation. Przypnij zdarzenie do elementu zawierającego elementy z [data-src], dzięki czemu będzie reagować na wszystko, co jest w tym nadrzędnym elemencie. PoC: https://jsfiddle.net/Comandeer/p3c6myL9/

+1 głos
odpowiedź 28 lutego 2020 przez matir85 Bywalec (2,410 p.)

querySelectorAll tworzy nam tzw. listę węzłów (NodeList). Spróbuj użyć operatora rest tak aby otrzymać tablicę a  na niej zamiast pętli for użyj forEach.

var catalogs = [...document.querySelectorAll("[data-src]")];

Po drugie querySelector nie aktualizuje zmiennej na bieżąco. Spróbuj zamiast niego użyć

.getElementsBy...

 

Podobne pytania

0 głosów
1 odpowiedź 232 wizyt
pytanie zadane 17 sierpnia 2016 w JavaScript przez Jack9999 Początkujący (300 p.)
0 głosów
1 odpowiedź 167 wizyt
0 głosów
1 odpowiedź 478 wizyt

92,563 zapytań

141,413 odpowiedzi

319,590 komentarzy

61,948 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!

...