Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmiana klasy w jQuery
forte94
post 16.07.2012, 13:04:19
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 2.04.2012

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


Witam, tworzę menu które podświetla obrazki z danej kategorii, którą zaznaczymy. Menu po kliknięciu na dany przycisk powinno podświetlić (opacity:1) obrazki z kategorii przycisku. Natomiast po ponownym kliknięciu na przycisk, powinno ukryć obrazki (opacity:0.2). Menu jest już prawie gotowe, pojawia się problem prz "wyciskaniu" przycisku.

Przykładowy przycisk wygląda tak:

  1. <div class="kategoria1 przycisk">Nazwa kategorii</div>



Natomiast przykładowy skrypt do przycisku wygląda tak:

  1. $(".kategoria1").click(function () {
  2.  
  3. $(".kategoria2").css("opacity","0.2");
  4. $(".kategoria3").css("opacity","0.2");
  5. $(".kategoria4").css("opacity","0.2");
  6. $(".kategoria5").css("opacity","0.2");
  7. $(".kategoria6").css("opacity","0.2");
  8.  
  9. $(".kategoria1").css("opacity","1");
  10. $(".kategoria1").addClass("wcisniety1");
  11. $(".kategoria1").removeClass("kategoria1");
  12. });


A przykładowy skrypt do wciśniętego przycisku wygląda tak:
  1.  
  2. $(".wcisniety1").live('click',function(){
  3. $(".kategoria1").css("opacity","1");
  4. $(".kategoria2").css("opacity","1");
  5. $(".kategoria3").css("opacity","1");
  6. $(".kategoria4").css("opacity","1");
  7. $(".kategoria5").css("opacity","1");
  8. $(".kategoria6").css("opacity","1");
  9. $(".wcisniety1").addClass("kategoria1");
  10. $(".wcisniety1").removeClass("wcisniety1");
  11. });


Problem polega na tym, że skrypty wykonują się jeden po drugim, a więc zawsze wracają do stanu z przed kliknięcia. Po prostu skrypt pierwszy zmienia nazwę klasy, a skrypt drugi jest przypisany dla tej klasy i wykonuje się. Przy zamianie kolejności skryptów w pliku js dzieje się to samo. Jak sobie z tym poradzić?
Go to the top of the page
+Quote Post
radziopoke
post 16.07.2012, 16:24:51
Post #2





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

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


Mam pytanie czy tworzysz jakieś elementy dynamicznie że używasz live. Bo jeżeli nie to nie jest on tu potrzebny i wtedy można to zrobić tak
  1. $(".kategoria1").click(function () {
  2. if($(".kategoria1").css("opacity")=="0.2")
  3. {
  4. $(".kategoria2").css("opacity","0.2");
  5. $(".kategoria3").css("opacity","0.2");
  6. $(".kategoria4").css("opacity","0.2");
  7. $(".kategoria5").css("opacity","0.2");
  8. $(".kategoria6").css("opacity","0.2");
  9. $(".kategoria1").css("opacity","1");
  10. }
  11. else
  12. {
  13. $(".kategoria1").css("opacity","0.2");
  14. }
  15. });

i takie jedno pytanie dlaczego po kliknięciu wciśniętego przycisku w twoim skrypcie resztę przycisków zmieniasz opacity na 1

Ten post edytował radziopoke 16.07.2012, 16:25:06
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: 15.07.2025 - 01:32