Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] [JQuery] zdarzenia na dynamicznie dodawanych elementach, Długo już się z tym męczę
gburhiphop
post 8.06.2017, 01:18:45
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.07.2016

Ostrzeżenie: (0%)
-----


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ł?
Go to the top of the page
+Quote Post
viking
post 8.06.2017, 04:14:43
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


https://prophp.pl/article/15/jquery%2C_zdar...e_metoda_%24.on

Delegacja zdarzeń.


--------------------
Go to the top of the page
+Quote Post
gburhiphop
post 8.06.2017, 14:02:21
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.07.2016

Ostrzeżenie: (0%)
-----


ale #b nie jest dzieckiem #a, tylko to jest rodzeństwo, a delegacja dotyczy chyba relacji rodzic-dziecko
Go to the top of the page
+Quote Post
viking
post 8.06.2017, 14:07:49
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
gburhiphop
post 8.06.2017, 14:15:50
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.07.2016

Ostrzeżenie: (0%)
-----


Dodaj zdarzenie razem z elementem? Pierwsze słyszę. Jak?

Rodzicem wspólnym jest <form>, a więc mam go dać jako drugi parametr?
Go to the top of the page
+Quote Post
Pyton_000
post 8.06.2017, 14:16:55
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


$("rodzic").on("click", "#b", function(){
alert('dasd');
});
Go to the top of the page
+Quote Post
gburhiphop
post 8.06.2017, 14:25:21
Post #7





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.07.2016

Ostrzeżenie: (0%)
-----


$("#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
Go to the top of the page
+Quote Post
bostaf
post 8.06.2017, 14:35:54
Post #8





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
gburhiphop
post 8.06.2017, 14:53:21
Post #9





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.07.2016

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
bostaf
post 8.06.2017, 15:23:05
Post #10





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
gburhiphop
post 8.06.2017, 17:22:24
Post #11





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.07.2016

Ostrzeżenie: (0%)
-----


Dzięki
Go to the top of the page
+Quote Post
patwoj98
post 8.06.2017, 18:48:12
Post #12





Grupa: Zarejestrowani
Postów: 218
Pomógł: 16
Dołączył: 6.06.2014
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(gburhiphop @ 8.06.2017, 18:22:24 ) *
Dzięki


Zamiast pisać to daj mu "podziękowanie" za pomocą przycisku wink.gif
Go to the top of the page
+Quote Post
gburhiphop
post 9.06.2017, 14:46:24
Post #13





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.07.2016

Ostrzeżenie: (0%)
-----


Dałem już. Nie wiedziałem smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 01:08