JQuery活动菜单使用过滤器时出现问题

时间:2012-03-28 06:45:50

标签: jquery menu highlight

我正在使用此jQuery代码突出显示活动菜单:

$(function(){
   var path = location.pathname.substring(1);
   if ( path )
     $('#topnav a[href$="' + path + '"]').attr('class', 'active');
 });

工作正常。问题出在其中一个菜单页面,我使用的是字母过滤器。因此,当我点击任何字母表来过滤用户时,突出显示就会消失。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

function extractPageName(hrefString) {
    var arr = hrefString.split('/');
    return (arr.length < 2) ? hrefString : arr[arr.length - 2].toLowerCase() + arr[arr.length - 1].toLowerCase();
}

function setActiveMenu(arr, crtPage) {
    for (var i = 0; i < arr.length; i++) {
        if (extractPageName(arr[i].href) == crtPage) {
            if (arr[i].parentNode.tagName != "DIV") {
                arr[i].className = "selected";
                arr[i].parentNode.className = "selected";
            }
        }
    }
}

function setPage() {
    hrefString = document.location.href ? document.location.href : document.location;

    if (document.getElementById("navigation") != null)
        setActiveMenu(document.getElementById("navigation").getElementsByTagName("a"), extractPageName(hrefString));
}

并在html代码的末尾添加此函数(在最后一个div之后)

setPage()