2012-03-28 64 views
0

我使用这个jQuery代码突出活动菜单JQuery的活动菜单问题:同时使用过滤器

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

其工作的罚款。问题出在菜单页面之一,我正在使用字母过滤器。所以当我点击任何字母来筛选用户时,突出显示就会消失。

我该如何解决这个问题?

+0

为什么不能让服务器为您服务与'active'类,而不必使用jQuery? – ShadowScripter 2012-03-28 06:53:46

+0

你能提供你的问题的演示代码吗? – 2012-03-28 07:06:48

回答

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()