2012-03-28 2 views
0

를 사용하는 동안 :JQuery와 활성 메뉴 문제 I 활성 메뉴를 강조하기 위해이 jQuery 코드를 사용하고 필터

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

그 작업을 잘. 문제는 메뉴 페이지 중 하나에서 알파벳 필터를 사용하고 있습니다. 따라서 알파벳을 클릭하여 사용자를 필터링하면 강조 표시가 사라집니다.

이 문제를 어떻게 해결할 수 있습니까?

+0

왜 서버가 대신 JQuery와 사용하지의'active' 클래스와 서비스를 제공 할 수? – ShadowScripter

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

과 (마지막 DIV 후) HTML 코드의 끝 부분에이 기능

setPage를 추가()