2016-12-22 17 views
0

単純なスクリプトを使用して、ユーザーの現在地に基づいてヘッダーとフッターのナビゲーションリンク上のアクティブ状態を適用または削除しますが、コンソールにエラーは発生せず、何も変更していません。window.location.pathnameは現在アクティブな状態を追加/削除していません

var current; 
current = window.location.pathname; 

$('ul#menu li#home-nav').addClass("active"); 

if(current.indexOf("index.php") >= 0){ 
    $('ul#menu li, ul#subnav li').removeClass("active"); 
    $('ul#menu li#home-nav, ul#subnav li#home-subnav').addClass("active"); 
} 

if(current.indexOf("services.php") >= 0){ 
    $('ul#menu li, ul#subnav li').removeClass("active"); 
    $('ul#menu li#services-nav, ul#subnav li#services-subnav').addClass("active"); 
} 

などこれを実現するには、より効率的な方法がありますか?

+0

IDと要素に問題がないことを確認できますか?あなたのコードは正しいようです。 – 31piy

+0

@ 31p IDと要素はすべてそのままです。 – bcam7

答えて

1

この簡単な解決方法を試してください。

var url = window.location.pathname; 
var urlFilename = url.substring(url.lastIndexOf('/')+1); 

if(urlFilename !== ''){ 
    $('ul#menu li, ul#subnav li').removeClass('active'); 
    $myElm = $('ul#subnav li a[href="' + urlFilename + '"]'); 
    if($myElm.length){ 
     $myElm.parent().addClass('active'); 
     $myElm.parent().parent().parent().addClass('active'); 
    } 
} 

HTMLを共有すると非常に役に立ちます。

ありがとうございました。

関連する問題