2012-03-28 63 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()