Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Problem ze zwróconymi danymi
Forum PHP.pl > Forum > XML, AJAX > AJAX
menda90
Witam, mam nieciekawy problem:

Wygląda to tak, że po naciśnięciu pewnego elementu (np. hiperłącza) odbieram odpowiedź wygenerowaną przez AJAXa, jest to kod HTML i to wszystko wrzuca mi się do odpowiedniego diva - to śmiga dobrze. Problem się pojawia jak w zwróconym html'u mam inne hiperłącze, które ma ustalone z góry ID. Wcześniej w skrypcie oczywiście sobie napisałem obsługę tego elementu , że po kliknięciu coś tam coś tam się dzieje, chociażby prosty alert. No ale niestety element przez JS nie jest wykrywany. Da się temu jakoś zaradzić, aby to zatrybiło ?

Trochę kodu:

Plik "a.js"

  1. $(document).ready(function()
  2. {
  3.  
  4. function show($page)
  5. {
  6. $.post
  7. ("./ajax.php", {page: $page},
  8.  
  9. function(data)
  10. {
  11. $("#result").html(data);
  12. }
  13. )
  14. }
  15.  
  16. $("#doAjax").click(function(e){ e.preventDefault(); show(1); } )
  17. $("#link").click( function(e){ e.preventDefault(); alert("hello"); })
  18.  
  19. }
  20. )


"ajax.php" zwraca np.
  1. <a href="#" id="link">Click Me!</a>

no i po kliknięciu w ten link brak alertu.

//Edit
Znalazłem sam rozwiązanie - wystarczyło użyć funkcji "delegate".
Dla ludzi mających ten sam problem zamiast linii
  1. $("#link").click( function(e){ e.preventDefault(); alert("hello"); })

należy wstawić
  1. $("#kontener").delegate('#link, 'click', function() { alert("hello") });
krowal
Do rozwiązania swojego problemu powinieneś raczej użyć .live():
[JAVASCRIPT] pobierz, plaintext
  1. $("#link").live('click', function(e){ e.preventDefault(); alert("hello"); })
[JAVASCRIPT] pobierz, plaintext
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.