Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Dodawanie i usuwanie elementów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
atarex75
Witam,

mam taki oto kod JS, który obsługuje zdarzenia dodania i ukrycia
  1. $(document).ready(FUNCTION(){
  2. // ADD
  3. $('#add_item').click(FUNCTION () {
  4. var r = Math.floor(Math.random()*20000);
  5. $('table').append('<tr id="'+r+'"><td><a href="#" class="link_remove" id="'+r+'">Usuń '+r+'</a></td></tr>');
  6. RETURN false;
  7. });
  8.  
  9. // remove
  10. $('a[class^=link_remove]').click(FUNCTION () {
  11. var id = this.getAttribute('id');
  12. $('tr[id='+id+']').hide();
  13. RETURN false;
  14. });
  15. });


i do tego HTML
  1. <a href="#" id="add_item">Dodaj</a>
  2. <tr id="0"><td><a href="#" class="link_remove" id="0">Ukryj</a></td></tr>
  3. </tbody>


o ile jeżeli fizycznie dodam wiersz w tabeli to bez problemu wszystko działa i po naciśnięciu UKRYJ wiersz znika, o tyle jeżeli zrobię to dynamicznie poprzez link DODAJ niestety zdarzenie nie działa ...

w czym tkwi problem? co robię nie tak?
binbash
Problem jest w tym, że dodając elementy dynamicznie nie mają one dodanego do zdarzenia "click" callbacka. Możesz zrobić to na 2 sposoby:
1. Skorzystać z metody live w jquery, wtedy wszystkie elementy nawet te dodane już po załadowaniu strony będą obsługiwać to zdarzenie:
  1. $('a[class^=link_remove]').live('click', function() {
  2. // implementacja
  3. });

2. Przy tworzeniu nowego linka zbindować dla niego do zdarzenia click ta funkcje usuwającą.
atarex75
smile.gif

dzięki wielkie, od rana mieszałem i nic ciekawego nie przychodziło mi do głowy, a tu LIVE ...

wszystko gra teraz ...
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.