Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery][ajax] dynamicznie generowane buttony i brak reakcji na .click
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kasek
Witam



jQuery(document).ready(function(){


jQuery("#id").click(function()
{
var datatosend='mojedane='+jQuery(this).val();
jQuery.ajax({
type : 'GET',
url : 'includes/test.php',
data : datatosend,
error: function(data) { alert(data); },
success: function(data) {
$('#div').html(data); }




});
})

});

Grupa moich radio buttonów ładowana jest dynamicznie w zależności od tego co kto wybierze wcześniej z pewnej listy select ( zdarzenie .change)

<input type='radio' id=id' name='id' value='1'>
<input type='radio' id=id' name='id' value='2'>
<input type='radio' id=id' name='id' value='3'>

Problem polega na tym że jeśli na sztywno zrobię w formularzu te radio buttony powyższa funkcja działa bez zarzutu , klikam w buttony i za każdym razem dane są przesyłane.
Jeżeli zaś dokładnie ten sam kod html z buttonami zostanie załadowany dynamicznie poprzez funkcję jquery w zależności od wybranego wcześniej selecta , to po kliknięciu w nie nic się nie dzieje.

Funkcja ładowana jest w head w indexie.

Ktoś wie gdzie może leżeć przyczyna ?

Dzięki za pomoc
Pozdrawiam
Piotr



shikamaru88
Rozumiem że eventy dla tych inputów ustawiasz w zdarzeniu ready albo load. Te eventy ustawiane są w momencie wczytania DOM kiedy Twoich butonów jeszcze w drzewie nie ma. Dodajesz je dynamicznie już po wczytaniu strony. Możesz albo napisać sobie funkcję zawierającą te wszystkie handlery czyli:

[JAVASCRIPT] pobierz, plaintext
  1. function makeHandlers(){
  2. $('id').select(function(){
  3. ...............................
  4. });
  5. }
[JAVASCRIPT] pobierz, plaintext


i później w polu success wywołać tą funkcję:

[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. ..............
  3. success: function(response){
  4. //tu wrzucasz swoje inputy
  5. ...........................
  6. makeHandlers();
  7. }
  8. });
[JAVASCRIPT] pobierz, plaintext


Wtedy będziesz miał dodane do nich eventy. Możesz też zwrócić kod js razem z widokiem z buttonami ale wtedy w polu dataType musisz podać 'script'.I chyba mi się skończyły pomysły biggrin.gif
mortus
Zamiast:
[JAVASCRIPT] pobierz, plaintext
  1. jQuery("#id").click(function()
[JAVASCRIPT] pobierz, plaintext

użyj:
[JAVASCRIPT] pobierz, plaintext
  1. jQuery("#id").bind("click", function()
[JAVASCRIPT] pobierz, plaintext


Rozumiem, że ten kod HTML, to tylko przykład wyrwany z kontekstu. Jeśli nie, to wiedz, że w dokumencie HTML może istnieć tylko jeden element o danym id, tzn. atrybut id musi być unikalny.
kasek
Dzięki za odpowiedzi.

Mortus , zamiast bind dałem Live i wszystko jest OK.

  1. jQuery("#id").live("click", function()
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.