Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Funkcja działa tylko przy pierwszym użyciu
rudolf35
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 17.10.2007

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


Witam,

stworzyłem w jquery dwa zdarzenia "click". Pierwsze dodaje zdjęcie do galerii i działa bez problemów. Natomiast drugie, usuwa wybrane zdjęcie. Funkcje działają prawidłowo. Jednak druga (usuwająca zdjęcie) działa tylko przy pierwszym użyciu. Za drugim razem przycisk, którego kliknięcie ona nasłuchuje działa jak standardowy odsyłacz, czyli wczytuje się strona. Męczę się z tym i nie mogę dojść dlaczego tak jest.

  1. $(document).ready(function() {
  2. $('a[class="addToGalleryButton"]').click(function(){
  3. var picture_id =$(this).attr('id')
  4. $.ajax(
  5. {
  6. url: 'http://jakasdomena.net/editor/gallery/add',
  7. type: "POST",
  8. data: ({article_id:<?php echo $this->articleid ?>, picture_id:picture_id }),
  9. success: function(html)
  10. {
  11. $('#imagesInGallery').empty();
  12. $('#imagesInGallery').append(html);
  13. }
  14. });
  15. return false;
  16. });
  17.  
  18. $('a[class="removeFromGalleryButton"]').click(function(){
  19. var picture_id =$(this).attr('id')
  20. $.ajax(
  21. {
  22. url: 'http://jakasdomena.net/editor/gallery/delete',
  23. type: "POST",
  24. data: ({article_id:<?php echo $this->articleid ?>, picture_id:picture_id }),
  25. success: function(html)
  26. {
  27. $('#imagesInGallery').empty();
  28. $('#imagesInGallery').append(html);
  29. }
  30. });
  31. return false;
  32. });
  33.  
  34. });


Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


ogólnie to w zasadzie nie programuję, ale jeśli chcesz by on działał tak jak .delegate to poprawnie powinno być tak:
http://jsfiddle.net/F8y7x/8/
prawie jak w Twoim drugim linku - element który wyszukujesz najlepiej powinien być kontenerem jak najniżej jak to możliwe, a podpinając zdarzenie podajesz jeszcze dynamiczne selektory... poczytaj jeszcze o .delegate w jQ - jak wrócę bo mi się jedzenie spali poszukam linka o live bez jQ to Ci tą technikę powinno rozjaśnić...

edit...
na tej stronie masz implementację zasady działania funkcji .mouseleave
http://www.quirksmode.org/js/events_mouse.html
jeśli to wszystko chcesz zrozumieć, to szukaj w google pod hasłami (js +) mouseleave, mouseenter, live events itd.
cała reszta jeśli chodzi o live to po prostu implementacja tych mechanizmów w bibliotekach

- już nieraz tutaj na forum podawałem rozwiązania bez .live - chyba zanim w jQ była funkcja .delegate, rozwiązania funkcjonalnie zbliżone do delegate w związku z czym szybsze od live... idea delegate polega na tym, by podpinać możliwie jak najniżej cały kontener gdzie obserwujemy albo dynamiczne elementy, albo gdzie tych elementów jest mnóstwo np. liczone w tysiącach - wtedy jeden nasłuch będzie lepszym rozwiązaniem od podpięcia tysięcy listenerów....

Ten post edytował zegarek84 25.04.2012, 14:32:00
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 18:46