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ü:
 <div id="menu">
                <a href="index2.html" class="transparent">HOME</a>
                <a href="kepzesek.html" class="transparent">KÉPZÉSEK</a>
                <a href="munkalehetoseg.html" class="transparent">MUNKALEHETÖSÉG</a>
                <a href="araink.html" class="transparent">ÁRAINK</a>
                <a href="galeria.html" class="transparent">GALÉRIA</a>
                <a href="termekek.html" class="transparent">TERMÉKEK</a>
                <a href="about.html" class="transparent">ABOUT</a>
                <a href="contact.html" class="transparent">KAPCSOLAT</a>    
  </div>
meg ez a script:
<script type="text/javascript">
            $(document).ready(function(){                
                $("a[href="+$(location).attr('href').substring(31)+"]").toggleClass("current", true);
            });
</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
$(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

 $("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)
$('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.
$("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.
console.log("http://weblabor.hu/forumok/temak/110616/hozzaszolas/82379".substring(31))
"k/110616/hozzaszolas/82379"
console.log($('.breadcrumb a')[1].href);
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.
console.log(location.href);
console.log(location.href.substring(31));
http://weblabor.hu/forumok/temak/110616
k/110616