ugrás a tartalomhoz

jquery dinamikus navigáció

tvdr · 2011. Dec. 2. (P), 19.04
Üdv,
mostanában ismerkedem a jqueryvel és bele is botlottam valamibe amit nem értek.

adott egy menü:
  1. <div id="menu">  
  2.                <a href="index2.html" class="transparent">HOME</a>  
  3.                <a href="kepzesek.html" class="transparent">KÉPZÉSEK</a>  
  4.                <a href="munkalehetoseg.html" class="transparent">MUNKALEHETÖSÉG</a>  
  5.                <a href="araink.html" class="transparent">ÁRAINK</a>  
  6.                <a href="galeria.html" class="transparent">GALÉRIA</a>  
  7.                <a href="termekek.html" class="transparent">TERMÉKEK</a>  
  8.                <a href="about.html" class="transparent">ABOUT</a>  
  9.                <a href="contact.html" class="transparent">KAPCSOLAT</a>      
  10.  </div>  
meg ez a script:
  1. <script type="text/javascript">  
  2.             $(document).ready(function(){                  
  3.                 $("a[href="+$(location).attr('href').substring(31)+"]").toggleClass("current"true);  
  4.             });  
  5. </script>   
és senki és semmi kedvéért nem hajlandó a megtalált anchornak beállítani a classt.

mi az amit nagyon elnézek? :)
 
1

Micsoda?

Poetro · 2011. Dec. 2. (P), 19.20
Micsoda az a location? Az biztosan egy DOM elem? Annak van href attribútuma? És biztosan annak a 31. karaktertől kezdődő részével egyenlő a linkek href attribútuma?
2

sejtésem szerint

razielanarki · 2011. Dec. 2. (P), 19.41
..ez a window.location, lespórolva a globális window megnevezése, ...nem szép :)

de a location egy objektum (bár teljes url stringgé alakul ha stringművelteket végzünk rajta), és nem string: elérhetők benne az url részei (console.dir-rel irasd ki firebugban), nem kell substring-gel szenvedni.
3

http://www.w3schools.com/jsre

tvdr · 2011. Dec. 2. (P), 19.42
http://www.w3schools.com/jsref/obj_location.asp

a
  1. $(location).attr('href').substring(31)  

visszaadja az url nekem fontos részét, az előtte lévő 31 karakter a http://localhost:8080/blablabla...

de ha ezt kiszedem és annyit hagyok csak, hogy
  1. $("a[href='index.html']").toggleClass("current"true);  
akkor sem csinálja amit kéne
4

href = abszolút url

razielanarki · 2011. Dec. 2. (P), 19.52
most csekkoltam chormeban, lehet ennyivel meg tudod úszni, mivel úgynézki h a href-ben abszolút url-van
(legalábbis egy random anchort inspectelve, a dom-ban ez látszik)
  1. $('a[href="'+window.location.href+'"]').addClass('current');  
5

Nem

Poetro · 2011. Dec. 2. (P), 19.59
A substring a 31. karaktertől kezdődő részt adja vissza. De teljesen felesleges is használni.
  1. $("a[href$='index.html']").addClass("current");  
Ez az index.html-re végződő href attribútummal rendelkező linkeket adja vissza, majd hozzáadja a current osztályt. Egyébként érdemes lenne kiíratnod a linkek href attribútumát, érdekes meglepetések érhetnek, főleg IE esetén. Ezért érdemesebb csak a linkek href attribútumának végét nézni, elkerülendő a meglepetést.
  1. console.log("http://weblabor.hu/forumok/temak/110616/hozzaszolas/82379".substring(31))  
"k/110616/hozzaszolas/82379"
  1. console.log($('.breadcrumb a')[1].href);  
  2. console.log($('.breadcrumb a').eq(1).attr('href'));  
http://weblabor.hu/forumok/temak/110616
/forumok/temak/110616
Valamint teljesen felesleges a jQuery használata a location objektumon.
  1. console.log(location.href);  
  2. console.log(location.href.substring(31));  
http://weblabor.hu/forumok/temak/110616
k/110616