2012-03-28 5 views
0

ich diesen jQuery-Code verwenden die aktiven Menüs zu markieren:JQuery aktives Menü Ausgabe, während Filter mit

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

Seine adaequat. Das Problem ist auf einer der Menüseiten, ich benutze einen alphabetischen Filter. Wenn ich also auf eines der Alphabete klicke, um die Benutzer zu filtern, wird die Hervorhebung ausgelöst.

Wie behebe ich dieses Problem?

+0

Warum lassen Sie nicht den Server, den Sie mit der 'active' Klasse dienen, anstelle von JQuery zu benutzen? – ShadowScripter

+0

können Sie Demo-Code Ihres Problems bereitstellen? –

Antwort

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)); 
} 

und fügen Sie diese Funktion am Ende des HTML-Code (nach der letzten div)

setPage()