2017-10-12 14 views
0

現在、ナビゲーション内のリンクにアクティブなクラスを追加するスクリプトを使用しています。これはほとんどのページでうまくいき、hrefとURLを比較します。対応するページを開いているときにアクティブなクラスをナビゲーションに追加

私が遭遇する問題の1つは、ユーザーがドメインに上がったときと、ユーザーがホームページへのリンクをクリックしたときです。自宅へのリンクは:../ですので、あなたがホームページにいるときにスクリプトを比較するものはありません。

スクリプトは他のすべてのリンク(../contactおよび../blog/)に対して動作します。スクリプトはhrefとURLを比較できるためです。

私はリンクのIDフォームを比較することを考えましたが、残念ながらそれを動作させることはできませんでした。以下は私が現在使っているスクリプトですが、これはおそらく編集する必要があります。

$(function(){ 

var url = window.location.pathname, 
    urlRegExp = new RegExp(url.replace(/\/$/,'') + "$"); 

    $('.nav-order a').each(function(){ 

     if(urlRegExp.test(this.href.replace(/\/$/,''))){ 
      $(this).addClass('current'); 
     } 
    }); 
}); 

ありがとうございました!あなたは正規表現を使用している理由

+1

いかなる理由をお試しください! (等号演算子を使用していて、それが期待どおりに一致するように私に聞こえます) –

+0

ホームページであることがわかっている場合、おそらく正規表現は必要ありません。その部分を単純にハードコードすることができます。 – joym8

+0

私はこれを前にしたことはないと認めなければなりません。公平であるために、私はこのスクリプトをオンラインで見つけ、それが自分のニーズに合うと思った。残念ながら私はjqueryについてあまりよく分かりません。 –

答えて

1

この

if (window.location.pathname == '/'){ 
    /*you are on homepage*/ 
    $('.nav-order a:first-child').addClass('current'); 
} 
+0

自分のスクリプトの代わりにこのスクリプトを使用しますか?これを現在のスクリプトに追加しますか? –

+0

'each'文の前に追加してみてください – joym8

+0

こんにちは、遅い回答をおかけして申し訳ありませんが、私は追加しようとしましたが、残念ながら動作しません。ユーザーがホームページに着陸したとき、または単にwww.example.comを着陸したときに、ナビゲーション内のすべてのアイテムにアクティブなクラスが追加されます。 –

関連する問題