0

ブラウザの現在のページに対応するメニュー項目を強調表示するために、次のjqueryコードがあります。

    $(document).ready(function (){

    $("ul#nav a").each(function (){

    var hrefWindow = $(this).attr("href");

    if (hrefWindow == window.location.href.match(/[^/]+$/g)) {
        $(this).parent().addClass("active");
    }
    else {
        $(this).parent().removeClass("active");
    };        
});      
})

ご覧のとおり、expressionは、次のように私のWebアドレスでスラッシュの直後にある文字列を探しています。

www.mywebsite.com/thisStringWillBeFoundByExpression、

すべて正常に動作しますが、アドレスバーにwww.mywebsite.com(スラッシュの後のindex.htmなし)しか表示されず、式で何も見つからないため、初めてドメインアドレスを入力するときに小さな問題が発生します。

アドレスバーにwww.mywebsite.comしかない場合に、コードを変更してクラス'active'をindex.htmに追加するにはどうすればよいですか?

4

1 に答える 1

1

location.pathname解析する代わりに使用することをお勧めしますhref:

var path = location.pathname.substring(1);

$(this).parent().toggleClass("active", !hrefWindow || path === hrefWindow);

参照: https://developer.mozilla.org/en-US/docs/DOM/window.location#Properties

于 2013-02-15T20:34:37.707 に答える