Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX/Jquery] Kod zmieniony przez jquery nie działa
Saletra
post 12.06.2009, 11:17:46
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 2.06.2007

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


Witam,

Chodzi o link Dodaj/Usun. Po kliknięciu Dodaj zamienia się w Usun. Po kliknieciu w Usun jest 404 zamiast zamieniac sie w Dodaj. Można to naprawić?
(można utworzyć nowy plik html i wstawić poniższy kod w lokalizacji z jquery.js i przetestować)

  1. <script type="text/javascript" src="jquery.js"></script>
  2. <script type="text/javascript">
  3. $(document).ready(function(){
  4. $(".add").click(function(){
  5.  
  6. $.get("jquery.php", { follow: "27" } );
  7. $('div#dane').html('<a href="nothing" class="delete">Usun</a>');
  8. return false;
  9. });
  10.  
  11. $(".delete").click(function(){
  12. $.get("jquery.php", { unfollow: "yes", pid: "25" } );
  13. $('div#dane').html('<a href="nothing" class="add">dodaj</a>');
  14. return false;
  15. });
  16. });
  17. </script>
  18. <div id="dane"><a href="nothing" class="add">dodaj</a></div>
  19. </body>
  20. </html>
Go to the top of the page
+Quote Post
osl
post 12.06.2009, 11:59:52
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


ekspertem jquery nie jestem, ale wydaje mi się, że selektor $('.delete') nic tu nie daje z prostego powodu - takiego elementu z taką klasą po prostu nie ma. po zamianie klasy musiałbyś pewnie jeszcze raz użyć selektora żeby dodać zdarzenie click, ewentualnie skorzystać z funkcji live
Go to the top of the page
+Quote Post
Fifi209
post 12.06.2009, 12:47:23
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


A konsolka jakieś błędy może wysypuje ?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Saletra
post 12.06.2009, 14:25:31
Post #4





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 2.06.2007

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


Ok, namęczyłem się. Fakt, trzeba doinstalować plugin Live i wtedy działa.
Wersja zabazgrana 0.1 podsyłam i wracam do pracy:
  1. $(".dane5").bind('click', function() {
  2. $(this).html('<a href="delete" class="delete">usun1</a>');
  3. this.blur();
  4. return false;
  5. });
  6. $(".dane5").livequery('click', function() {
  7. $(this).html('<a href="add2" class="add2">dodaj2</a>');
  8. $(this).removeClass('dane5');
  9. $(this).addClass('dane6');
  10. this.blur();
  11. return false;
  12. });
  13. $(".dane6").bind('click', function() {
  14. $(this).html('<a href="delete3" class="delete3">usun3</a>');
  15. this.blur();
  16. return false;
  17. });
  18. $(".dane6").livequery('click', function() {
  19. $(this).html('<a href="add" class="add2">dodaj4</a>');
  20. $(this).removeClass('dane6');
  21. $(this).addClass('dane5');
  22. this.blur();
  23. return false;
  24. });
Go to the top of the page
+Quote Post
singles
post 13.06.2009, 11:22:41
Post #5





Grupa: Zarejestrowani
Postów: 121
Pomógł: 26
Dołączył: 2.07.2007

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


Nie działało Tobie na początku, ponieważ dopisywałeś event do elementu o klasie .delete w momencie załadowania strony, a wtedy go jeszcze nie było. Rozwiązania są dwa - skorzystanie z event delegation (czyli w praktyce Twoje live) albo dopisywać zdarzenie do elementu click po jego stworzeniu.

BTW. Nie musisz używać pluginu LiveQuery. jQuery od wersji bodajże 1.3.2 posiada metodę live(). Zawsze jeden plugin mniej.

Ten post edytował singles 13.06.2009, 11:23:07


--------------------
Works for me => u mnie działa - blog o (o)programowaniu i nie tylko
meet.php - darmowe meetupy związane z PHP
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 12:30