Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery]Jak dynamicznie zmienić klasę dla klikniętego elementu
Forum PHP.pl > Forum > Po stronie przeglądarki
amii
Chcę aby po kliknięciu w przycisk menu podświetlał się on na czerwono (klasa active). Wymyśliłem coś takiego ale nie działa zmienia na chwilę klasę ale nie zapamiętuje tego.
[JAVASCRIPT] pobierz, plaintext
  1. <head><script>
  2. $(document).ready(function() {
  3.  
  4. $('div.nb ul li a').click(function() {
  5.  
  6. $('div.nb ul li').each(function(index) {
  7. $(this).removeClass('active');
  8. }); //remove active class from each li element
  9.  
  10. $(this).parent().addClass('active'); //add active class to li element that is parent of clicked a element
  11.  
  12.  
  13. });
  14. });
  15. </script></head>
[JAVASCRIPT] pobierz, plaintext

  1. <div class="nb">
  2. <ul>
  3. <li class="active"><a href="index.php" id="m1" title="Strona główna" class="menu_start"><span>HOME</span></a></li>
  4. <li><a href="index.php?p=precel" id="m2" title="Seo precel" class="menu_start"><span>O PROGRAMIE</span></a></li>
  5. <li><a href="index.php?p=buy" id="m3" title="Zakup" class="menu_start"><span>KUP TERAZ</span></a></li>
  6. <li><a href="index.php?p=help" id="m4" title="Wsparcie" class="menu_start"><span>POMOC</span></a></li>
  7. <li><a href="index.php?p=customers" id="m5" title="Nasi klienci" class="menu_start"><span>KLIENCI</span></a></li>
  8. <li><a href="index.php?p=random" id="m6" title="Nasza firma" class="menu_start"><span>FIRMA</span></a></li>
  9. <li><a href="index.php?p=contact" id="m7" title="Kontakt z firmą" class="menu_start"><span>KONTAKT</span></a></li>
  10. </ul>
  11. </div>
thek
A pomyślałeś, że to nie ma prawa działać? Gdy klikniesz, wysyłasz request do serwera, który zwraca NOWĄ stronę. Tymczasem jQuery i JS ogólnie działa jedynie lokalnie. To czego potrzebujesz to albo ustawianie klasy aktywnej już po stronie serwera dla konkretnego linku, albo u usera już wykrywanie jaki adres strony jest otwarty i wyszukiwanie pośród linków menu go.
amii
OK dałem coś takiego choć mam wrażenie, że to nie jest profesjonalnie zrobione i brak temu rozwiązaniu elstyczności
  1. <li <?php if (substr($_SERVER["REQUEST_URI"], 9) == 'index.php') echo 'class="active"';?>><a href="index.php" id="m1" title="Strona główna" class="menu_start"><span>HOME</span></a></li>
  2. <li <?php if (substr($_SERVER["REQUEST_URI"], 9) == 'index.php?p=precel') echo 'class="active"';?>><a href="index.php?p=precel" id="m2" title="Seo precel" class="menu_start"><span>O PROGRAMIE</span></a></li>
frok
  1. $('div.nb ul li').each(function(index) {
  2. $(this).removeClass('active');
  3. }); //remove active class from each li element

można zapisać prościej: $('div.nb ul li.active').removeClass('active');


proponuję zapisać tak:
<script>
$(document).ready(function() {

$('div.nb ul li a').click(function() {

$('div.nb ul li.active').removeClass('active');

$(this).parent().addClass('active'); //add active class to li element that is parent of clicked a element


});
});
</script>
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.