0

私は現在使用しています:

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

    $('.mainmenu a').each(function () {
      if (urlRegExp.test(this.href.replace(/\/$/, ''))) {
        $(this).addClass('active');
      }
    });
});

私が使用している「mainmenu a」タグには link.html を含む href があるため、このスクリプトは URL に link.html が含まれている場合にうまく機能します。ただし、URL に /link/page (拡張子 .html なし) が含まれている場合や、その逆の場合にも機能するようにしたいと考えています。基本的に、これは .html 拡張子を含む URL で動作し、リンクはディレクトリです。これは可能ですか?

4

1 に答える 1

0

.htmlはい、比較を行う前に空の文字列に置き換えるだけです。しかし、あなたの問題に対する本当の解決策は、最初からサイト上でクリーンな URL とファイル名ベースの URL が混在することを許可しないことです。

次のようにします。

$(function () {
    var url = window.location.pathname.toLowerCase().replace(/(\/|\.html)$/, '').replace(/^\//, '');
    $('.mainmenu a').each(function () {
        var href = this.href.toLowerCase().replace(/(\/|\.html)$/, '').replace(/^\//, '');
        if (url === href) {
            $(this).addClass('active');
            return false; // break out of each()
        }
    });
});
于 2013-01-10T17:23:24.620 に答える