jQuery的手风琴菜单:设置活动类

问题描述:

我有一个折叠式菜单: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类,当子被隐藏时,活动类将被删除。

任何帮助将不胜感激,谢谢!

这个怎么样。你点击一个链接,每次从所有链接中删除所有的活动类,那么它仅适用于相应的一个:

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