Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jquery] niedziałający aktywny link w menu
lamcpp
post
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

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


Problem: mam menu, które jest listą nieuporządkowaną i chciałbym by po kliknięciu w jedną z pozycji menu, został ustawiony na niej kolor czerwony i zwiekszona czcionka - słowem chce by aktywny link był cały czas widoczny i różnił się od pozostałych linków. Problem jest jednak taki, że: mój kod jquery ustawia aktywny link taki jak chce, jednak kłopot w tym ze wtedy po kliknięciu na ten link nie przenosi mnie do strony z odnosnikiem - poprostu nie zostaje wykonana zadna akcja. Dlaczego:(?
kod html:
  1. <ul>
  2. <li class="hover-width1"><a href="ss.html">STRONA GŁÓWNA</a></li>
  3. <li class="hover-width3"><a href="ss2.html">OFERTA</a></li>
  4. <li class="hover-width3"><a href="ss3.html">CENNIK</a></li>
  5. <li class="hover-width2"><a href="ss4.html">PRZEPISY</a></li>
  6. </ul>

Kod jquery:
  1. $(function() {
  2. $('li a').click(function(e) {
  3. e.preventDefault();
  4. var $this = $(this);
  5. $this.closest('ul').children('li').removeClass('inny');
  6. $this.parent().addClass('inny');
  7. });
  8. });


Jak widać kod jquery daje klasę .inny - kod działa poprawnie jesli chodzi o ustawianie aktywnego linku, jednak powoduje że po kliknięciu na jakikolwiek z linków nie zostaje wykonana zadna akcja - nie przenosi mnie do zadnego linku:(
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Użyć PHP (IMG:style_emoticons/default/wink.gif)

Można wtedy sprawdzić jaki jest adres i w PHP nadpisać klasę czy styl danego LI. Dla ułatwienia można wysyłać coś GETem (IMG:style_emoticons/default/wink.gif)

Lub pobawić się JavaScriptem na wesoło (IMG:style_emoticons/default/wink.gif)

Zasada jest prosta (według twojego kodu):

Jeżeli w adresie strony na końcu jest "ss.html" to jesteśmy na STRONIE GŁÓWNEJ
jeżeli "ss2.html" to na OFERCIE itd...

Można po załadowaniu strony poprzez JS i wyrażenia regularne (Patrz obiekt String i metody match, oraz obiekt RegExp) sprawdzić na jakiej podstronie jesteśmy i wtedy na sztywno danemu LI ustawić klasę "inny". Można też być sprytniejszym jeszcze i użyć metody split (IMG:style_emoticons/default/wink.gif)

Przykład dla strony głównej:

  1. <ul id="menu">
  2. <li class="hover-width1"><a href="ss.html">STRONA GŁÓWNA</a></li>
  3. <li class="hover-width3"><a href="ss2.html">OFERTA</a></li>
  4. <li class="hover-width3"><a href="ss3.html">CENNIK</a></li>
  5. <li class="hover-width2"><a href="ss4.html">PRZEPISY</a></li>
  6. </ul>
  7.  
  8. <script type="text/javascript">
  9. // <![CDATA[
  10.  
  11. var adres = window.location.href;
  12.  
  13. var czesci_adresu = adres.split('/');
  14.  
  15. var podstrona = czesci_adresu.pop();
  16.  
  17. var podstrony = ['ss.html':0,'ss2.html':1,'ss3.html':2,'ss4.html':3];
  18.  
  19. document.getElementById('menu').getElementsByTagName('li')[ podstrony[podstrona] ].className = 'inny';
  20.  
  21. // ]]>


Analizę skryptu pozostawiam Tobie (IMG:style_emoticons/default/wink.gif)

HTH! (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 00:04