Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript][JQUERY] Zmiana klasy div...
Forum PHP.pl > Forum > Przedszkole
Sotery
Witam,
Męczę się i męczę i nic mi to nie daje... Pomyślałem, że może ktoś zauważy coś czego ja nie zauważyłem lub sam miał kiedyś podobny problem :)
Mianowicie zajmuje się aktualnie pewnym menu. Standardowo kilka pozycji, po nakierowaniu zwiększa się padding-right, a po kliknięciu dzieje się mała animacja, zmienia się kolor i inne mniej istotne rzeczy.
Problem polega na tym, że mimo iż nakierowanie działa, kliknięcie również, to zmiana klasy wypada już trochę gorzej. Chciałbym ją zmienić głównie z jednego powodu, aby później po najechaniu nie było już animacji zwiększenia paading-right, a mimo wszystko to następuje. Próbowałem już zmieniać klasę na różne sposoby i ciągle mi nie wychodzi.

Wedle zaprezentowanego niżej kodu po kliknięciu powinna zostać usunięta stara klasa a dodana nowa, i to w miarę następuje, tzn zmienia się kolor tekstu, więc coś działać musi, ale funkcja odpowiedzialna za nakierowanie nadal działa na tej pozycji w menu. Nie mam pomysłu co robię źle.

  1. <div id="s2_nawigacja"><ul>
  2. <li><a class="s2_nawigacja_pozycja_aktualna" href="#">Menu nr 1</a></li>
  3. <img src="img/s2_nawigacja.jpg" alt="" />
  4. <li><a class="s2_nawigacja_pozycja" href="#">Menu nr 2</a></li>
  5. <img src="img/s2_nawigacja.jpg" alt="" />
  6. <li><a class="s2_nawigacja_pozycja" href="#">Menu nr 3</a></li>
  7. <img src="img/s2_nawigacja.jpg" alt="" />
  8. <li><a class="s2_nawigacja_pozycja" href="#">Menu nr 4</a></li>
  9. <img src="img/s2_nawigacja.jpg" alt="" />
  10. <li><a class="s2_nawigacja_pozycja" href="#">Menu nr 5</a></li>
  11. <img src="img/s2_nawigacja.jpg" alt="" />
  12. <li><a class="s2_nawigacja_pozycja" href="#">Menu nr 6</a></li>
  13. </ul></div>


  1. <script type="text/javascript">
  2. $(".s2_nawigacja_pozycja").hover(function(){
  3. $(this).stop(true, true).animate({'padding-right': '49px'}, 250 );
  4. },function(){
  5. $(this).stop(true, true).animate({'padding-right': '8px'}, 250 );
  6. });
  7.  
  8. $(".s2_nawigacja_pozycja").click(function(){
  9. $(this).animate({'padding-top': '17px', 'height': '30px', backgroundColor:"#0e2044"}, 250 );
  10. $(this).removeClass('s2_nawigacja_pozycja').addClass('s2_nawigacja_pozycja_aktualna');
  11. });



Z góry dziękuję za odpowiedź :)
CuteOne
Sprawdzałeś czy na pewno nie zmienia?
[JAVASCRIPT] pobierz, plaintext
  1. $(".s2_nawigacja_pozycja").click(function(){
  2. $(this).animate({'padding-top': '17px', 'height': '30px', backgroundColor:"#0e2044"}, 250 );
  3. $(this).removeClass('s2_nawigacja_pozycja').addClass('s2_nawigacja_pozycja_aktualna');
  4. alert(this.className);
  5. });
[JAVASCRIPT] pobierz, plaintext
Sotery
Zmieniać zmienia, alert to potwierdza (pisałem, że kolor się zmienia, więc klasa musi zostać zmieniona) :)
Problem w tym, że mimo tej zmiany funkcja: $(".s2_nawigacja_pozycja").hover nadal działa na tej nowej klasie, nie rozumiem dlaczego x.x
Dodatkowo dodam, że Menu nr 1 nie jest podatne na tą funkcje (od początku class="s2_nawigacja_pozycja_aktualna").

Dziękuje za zainteresowanie się tematem, jeżeli ktoś znał by odpowiedź, a było by to za dużo roboty, to prosiłbym, aby mi to napisać, po prostu spróbuję rozwiązać to w jakiś inny sposób :)

PS. Tutaj jest demo przedstawiające problem:

Kod
http://jsfiddle.net/Sotery/CTWZL/
jakis_login
O to chodziło?
  1. $(function(){
  2.  
  3. $(".s2_nawigacja_pozycja").hover(function(){
  4. $(this).stop(true, true).animate({'padding-right': '49px'}, 250 );
  5. },function(){
  6. $(this).stop(true, true).animate({'padding-right': '8px'}, 250 );
  7. });
  8.  
  9. $(".s2_nawigacja_pozycja").click(function(){
  10. $(this).animate({'padding-top': '17px', 'height': '30px', backgroundColor:"#0e2044"}, 250 );
  11. $('#s2_nawigacja a').removeClass('s2_nawigacja_pozycja_aktualna');
  12. $(this).addClass('s2_nawigacja_pozycja_aktualna');
  13. });
  14.  
  15. });
ethann
.live()

[JAVASCRIPT] pobierz, plaintext
  1. $(function(){
  2.  
  3. $(".s2_nawigacja_pozycja").live("mouseover", function(){
  4. $(this).stop(true, true).animate({'padding-right': '49px'}, 250 );
  5. }).live("mouseout", function(){
  6. $(this).stop(true, true).animate({'padding-right': '8px'}, 250 );
  7. });
  8.  
  9. $(".s2_nawigacja_pozycja").click(function(){
  10. $(this).animate({'padding-top': '17px', 'height': '30px', backgroundColor:"#0e2044"}, 250 );
  11. $(this).removeClass('s2_nawigacja_pozycja').addClass('s2_nawigacja_pozycja_aktualna');
  12. });
  13.  
  14. });
[JAVASCRIPT] pobierz, plaintext
Sotery
I o to chodziło :D
Działa, dzięki wielkie :))
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.