菜单活动基于网址

时间:2013-01-10 17:20:22

标签: jquery url menu

我目前正在使用:

$(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时,此脚本运行良好。但是,当网址包含ie / link / page(没有.html扩展名)时,我也希望这可以工作,反之亦然。基本上我希望这与包含.html扩展名的url一起使用,并且链接是一个目录。这可能吗?

1 个答案:

答案 0 :(得分: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()
        }
    });
});