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%)
-----


@vieri_pl dobrze pisze ale za szybko i nawet nie sprawdził, że to nie zadziała ;]
luknąłem na dokumentację z ciekawości, że coś w jQuery się zmieniło... powyższy przykład zadziała jak stary .click... .live to było .delegate na "body"...
tutaj by uzyskać efekt .delegate po zdarzeniu podaje się selektory dzieci a dopiero potem funkcję
http://api.jquery.com/on/#direct-and-delegated-events - pierwsze 2 kody na jakie natrafisz i to co nad nimi pisze do ilu elementów zostanie podpięte zdarzenie...

problemem w kodzie autora jest:
$('#imagesInGallery').empty();
$('#imagesInGallery').append(html);
nowo utworzone elementy nie są już tymi samymi do których było podpięte zdarzenie - nie ma przykładu live ale wnioskuję, iż te linki do usuwania są w galerii...
kod napisany od ręki:
do podpięcia kliknięcia na usuwany element:
$("#imagesInGallery").on("click", "a.removeFromGalleryButton", function(){});
przy czym "a.removeFromGalleryButton" zamień na ".removeFromGalleryButton" o ile nie masz innych elementów niż linki w galerii o tej klasie czyli w zbiorze "#imagesInGallery .removeFromGalleryButton"

Ten post edytował zegarek84 25.04.2012, 13:25:22
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: 9.10.2025 - 16:31