Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] [JQuery] zdarzenia na dynamicznie dodawanych elementach
Forum PHP.pl > Forum > Przedszkole
gburhiphop
Mam następujący kod html:

  1. <div id="a" style="width:50px; height:50px; border:5px solid red;"></div>


I kod jquery:

$("#a").on("click", function(){
$("#a").after('<div id="b" style="width:50px; height:50px; border:5px solid red;"></div>');
});

$("#b").on("click", function(){
alert('dasd');
});

Oczywiście alert się nie pojawia. Dlaczego? Jak zrobić, żeby działał?
viking
https://prophp.pl/article/15/jquery%2C_zdar...e_metoda_%24.on

Delegacja zdarzeń.
gburhiphop
ale #b nie jest dzieckiem #a, tylko to jest rodzeństwo, a delegacja dotyczy chyba relacji rodzic-dziecko
viking
Ale dodajesz element dynamicznie w związku z czym nie istnieje w momencie gdy go wyszukujesz przez $("#b"). Znajdź rodzica wspólnego albo dodaj zdarzenie razem z elementem.
gburhiphop
Dodaj zdarzenie razem z elementem? Pierwsze słyszę. Jak?

Rodzicem wspólnym jest <form>, a więc mam go dać jako drugi parametr?
Pyton_000
$("rodzic").on("click", "#b", function(){
alert('dasd');
});
gburhiphop
$("#a").on("click", function(){
$("#a").after('<div id="b" style="width:50px; height:50px; border:5px solid red;"></div>');
});

$("#formularz").on("click", '#b', function(){
alert('dasd');
});

Nie działa, ale jak dla próby dałem body zamiast #formularz to działa. Trochę to dziwne, bo:
$("body").on("click", '#b', function(){
alert('dasd');
});

Działa na kliknięcie #b a nie body
bostaf
Cytat(gburhiphop @ 8.06.2017, 02:18:45 ) *
Mam następujący kod html:

  1. <div id="a" style="width:50px; height:50px; border:5px solid red;"></div>


I kod jquery:

$("#a").on("click", function(){
$("#a").after('<div id="b" style="width:50px; height:50px; border:5px solid red;"></div>');
});

$("#b").on("click", function(){
alert('dasd');
});

Oczywiście alert się nie pojawia. Dlaczego? Jak zrobić, żeby działał?

Bo "#b" jeszcze nie istnieje. Daj b.onclick wewnątrz a.onclick.
gburhiphop
Dzięki wszystkim. Teraz mam dwa sposoby i nie wiem którego użyć. Wie ktoś, który lepiej działa? Delegacja, czy on click b wewnątrz on click a?
bostaf
Cytat(gburhiphop @ 8.06.2017, 15:53:21 ) *
Dzięki wszystkim. Teraz mam dwa sposoby i nie wiem którego użyć. Wie ktoś, który lepiej działa? Delegacja, czy on click b wewnątrz on click a?

Zdecydowanie delegacja. Zignoruj to co napisałem wcześniej, nie doczytałem wcześniejszych i nie zauważyłem, że już weszliście na wyższy poziom worriedsmiley.gif
gburhiphop
Dzięki
patwoj98
Cytat(gburhiphop @ 8.06.2017, 18:22:24 ) *
Dzięki


Zamiast pisać to daj mu "podziękowanie" za pomocą przycisku wink.gif
gburhiphop
Dałem już. Nie wiedziałem smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.