2011-02-10 18 views
4

メニューがありますが、jqueryの現在のリンクを強調したいと思います。jqueryメニューの現在のURLを強調表示

var loc = window.location; 
    var lochref = $("#topNavigation li a").attr("href"); 

    if(lochref == loc){ 
     $('#topNavigation li a').addClass('currenthover'); 
    } 

上記のスクリプトでは、「a」クラスに変更はありません。どうすればjqueryでこれを行うことができますか? ありがとうございました

答えて

3

最初にオフにする:これはサーバー側で行うことを検討する必要があります。それはずっとずっと簡単で信頼できるものです。

attrが最初のリンクのプロパティ値を返すので、コードは最初のリンクのhrefのみを比較します。あなたは正しいものを見つけるためにリンクをループする必要があります。

var loc = window.location.href; 
$("#topNavigation li a").each(function() { 
    if(this.href == loc) { 
    $(this).addClass('currenthover'); 
    } 
}); 
1

コンソールでlocとlochrefをログに記録するか、アラートを出して値が何であるかを確認します。後ろにスラッシュがありません。それ以外のコードは有効です。

http://jsfiddle.net/loktar/gjZVK/3/

ヒットランと第二アラートが一致する必要があり、およびリンクが赤に変わります。

0

あなたはwindow.locationオブジェクトから.hrefを逃しました。最初の行を次のように変更する必要があります。

var loc = window.location.href 
+0

:これを試してみてください。 Firebugのようなツールを使用すると、コードを開発してデバッグするのがずっと簡単になります。 – Neil

1

私は常に現在のメニュー項目を強調表示するためにjQueryを使用しています。 Loktarが言ったように私は、放火犯を使用し、JavaScriptで「はconsole.log(window.locationの)」を実行して1分以内にこれを見つけた

$(function() { 
    var loc = window.location; 
    var pathName = loc.pathname.substring(loc.pathname.lastIndexOf('/') + 1); 
    $('[href$="' + pathName+ '"]').parent().addClass("active"); 
}); 
関連する問題