1

jQuery/JavaScript を使用してページのパス名を検出しid、ナビゲーション内のリンクに を割り当てています。基本的に、リンク テキストを黒から青に変更します。とにかく、私はいくつかのコードを借りてきましたが、RegExpテスト部分を理解するのに十分なほど進んでいませんが、パスとしてホームページを渡すと、ナビゲーション内のすべてのリンクに/割り当てられます (うまくいきます)。パス名でテストが正しく機能しない理由を誰かが理解するのを手伝ってくれますか?id/index.html/

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

    $('.nav ul li a').each(function() {  
        if (urlRegExp.test(this.href.replace(/\/$/,''))) {        
            $(this).attr('id', 'selected'); 
        }
    });

    $(function() {
        if (url === "/index.html" || url === "/") {
            $('.nav').attr('id','homenav');
        }
    });
});
4

2 に答える 2

2

これは同じタスクを達成するはずです:

var trailing_slash_re = /\/$/,
canon_url = location.pathname.replace(trailing_slash_re, '');

$('.nav ul li a').each(function() {
  var this_url = this.href.replace(trailing_slash_re, '');
  if (this_url.substr(-canon_url.length) == canon_url) {
    this.id = 'selected';
    return false; // don't process any others
  }
});

各リンクについて、それが で終わるかどうかを判断しますcanon_url。一致するアンカーが見つかったら、ループから飛び出します。selectedこれにより、複数のID が回避されます。

于 2013-05-07T16:44:57.837 に答える