Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jquery toggle rozwiń/zwiń (style/text)?
marcus755
post 11.06.2013, 14:33:54
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 1
Dołączył: 6.12.2012

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


Zrobiłem coś takiegie, jak poniżej:

  1. <tr>
  2. <td class="detal"><a href="#" id="pokaz">Rozwiń</a></td>
  3. </tr>
  4. <tr id="wiecej">
  5. <td>cośtam</td>
  6. </tr>
  7.  
  8. $("#pokaz").click(function(e){
  9. e.preventDefault(e);
  10. $("#wiecej").toggle();
  11. $(".detal").removeClass("detal").addClass("detal2");
  12. $("#pokaz").text('Zwiń');
  13. if ($("#pokaz").click(function(e){
  14. $(".detal2").removeClass("detal2").addClass("detal");
  15. $("#pokaz").text('Rozwiń');
  16. }));
  17. else {
  18. $(".detal").removeClass("detal").addClass("detal2");
  19. $("#pokaz").text('Zwiń');
  20. }
  21. });


Jak to powyżej uprościć i zapętlić, używając jquery toggle?
Chodzi o to, że mam link, który ma klasę detail oraz tekst w linku Rozwiń,
po kliknięciu ma pokazywać zawartość o id="more" i się zmieniać na klasę detail2 oraz tekst w linku Zwiń.
Po ponownym kliknięcie, wszystko wraca do punktu wyjścia.
Jak klikam jeszcze raz - nie zmienia mi klasy i tekstu...
Powyższy skrypt działa, ale po kolejnym kliknięciu, nie robi "zapętla się"...
Go to the top of the page
+Quote Post
erix
post 11.06.2013, 15:32:52
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Powyższy skrypt działa, ale po kolejnym kliknięciu, nie robi "zapętla się"...

Nie masz czasem więcej elementów o id="pokaz"?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
marcus755
post 11.06.2013, 15:54:30
Post #3





Grupa: Zarejestrowani
Postów: 158
Pomógł: 1
Dołączył: 6.12.2012

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


tzn. zrobiłem dla id="pokaz", id="pokaz2", id="pokaz3"...
Go to the top of the page
+Quote Post
sowiq
post 11.06.2013, 16:07:36
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(marcus755 @ 11.06.2013, 15:33:54 ) *
po kolejnym kliknięciu, nie robi "zapętla się"...

A to dlatego, że po każdym kliknięciu dodajesz nową akcję na zdarzenie click:
[JAVASCRIPT] pobierz, plaintext
  1. $("#pokaz").click(function(e){
  2. // ....
  3. $("#pokaz").click(function(e){ //// <- to powoduje, że po każdym kliknięciu Twoja funkcja przypisana jest na nowo
  4. // ....
  5. });
  6. // ....
  7. });
[JAVASCRIPT] pobierz, plaintext


Proponuję zrobić tak:
[JAVASCRIPT] pobierz, plaintext
  1. $("#pokaz").click(function(e){
  2. if($(this).hasClass('detal2')){
  3. // aktualny stan = aktywny. Tutaj chowasz co potrzeba
  4. $(this).removeClass('detal2').addClass('detal');
  5. $(this).text('Rozwiń');
  6. // ...
  7. }
  8. else{
  9. // aktualny stan = nieaktywny. Tutaj pokazujesz co potrzeba
  10. $(this).removeClass('detal').addClass('detal2');
  11. $(this).text('Zwiń');
  12. // ...
  13. }
  14. });
[JAVASCRIPT] pobierz, plaintext


Oczywiście resztę musisz dopisać sobie sam.

Ten post edytował sowiq 11.06.2013, 16:08:28
Go to the top of the page
+Quote Post
erix
post 11.06.2013, 16:32:38
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
tzn. zrobiłem dla id="pokaz", id="pokaz2", id="pokaz3"...

A o klasach w CSS, to Ty słyszałeś? tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
marcus755
post 12.06.2013, 08:59:47
Post #6





Grupa: Zarejestrowani
Postów: 158
Pomógł: 1
Dołączył: 6.12.2012

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


thnx a lot:-)
Go to the top of the page
+Quote Post
pyro
post 12.06.2013, 12:34:28
Post #7





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  1. e.preventDefault(e);


na obiekcie e wykonujesz metodę podając jako argument... obiekt e.


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
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: 26.04.2025 - 01:02