2012-06-07 47 views
1

我有一個摺疊式菜單:jQuery的手風琴菜單:設置活動類

<ul id="menu"> 
    <li> 
     <a href="#" class="highmenu">Menu1</a> 
     <ul class="sub"> 
      <li class="submenulink">Menu1Link1</li> 
      <li class="submenulink">Menu1Link2</li> 
     </ul> 
    </li> 
    <li> 
     <a href="#" class="highmenu">Menu2</a> 
     <ul class="sub"> 
      <li class="submenulink">Menu2Link1</li> 
      <li class="submenulink">Menu2Link2</li> 
     </ul> 
    </li> 
</ul> 

而這裏的jQuery腳本我使用:

$(document).ready(function() { 
    var pathname = window.location.pathname; 
    $("#menu ul").hide(); 
    $("#menu a[href='" + pathname + "']").parents(".sub").show(); 
    $("#menu li a").click(function() { 
     var checkElement = $(this).next(); 
     if ((checkElement.is("ul")) && (checkElement.is(":visible"))) { 
      return false; 
     } 
     if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) { 
      $("#menu ul:visible").slideUp("normal"); 
      checkElement.slideDown("normal"); 
      return false; 
     } 
    }); 
}); 

我想有是,當特定子打開,相應的高級菜單將被設置爲highmenu active類,當子被隱藏時,活動類將被刪除。

任何幫助將不勝感激,謝謝!

回答

0

這個怎麼樣。你點擊一個鏈接,每次從所有鏈接中刪除所有的活動類,那麼它僅適用於相應的一個:

var pathname = window.location.pathname; 
$("#menu ul").hide(); 
$("#menu a[href='" + pathname + "']").parents(".sub").show(); 
$("#menu li a").click(function() { 

    $("#menu li a").removeClass("active"); 
    $(this).addClass("active"); 

    var checkElement = $(this).next(); 
    if ((checkElement.is("ul")) && (checkElement.is(":visible"))) { 
     return false; 
    } 
    if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) { 
     $("#menu ul:visible").slideUp("normal"); 
     checkElement.slideDown("normal"); 
     return false; 
    } 
});​ 

工作小提琴這裏:http://jsfiddle.net/jKGNA/

+0

謝謝!它可以工作,但是當我點擊其中一個子鏈接時,'highmenu active'不再有效。有沒有人有修復? – user1428033

+0

不太確定你的意思。通過子鏈接你是指類「submenulink」(如Menu1Link1)的元素?你有沒有改變html在子菜單中包括錨標籤(如

  • Menu1Link2
  • )? – bm1729

    +0

    如果是這樣,則可以通過單擊非頂級菜單項來觸發事件處理程序。嘗試將第4行和第6行(我的示例)中的選擇器更改爲$(「a.highmenu」)。 – bm1729