我有两个带有子菜单的父菜单项,并触发代码以打开当前子菜单,同时关闭其他打开的子菜单。
但是我似乎无法让.toggleClass()
在打开的菜单上触发以关闭它(我想切换菜单项的打开/关闭)。
<ul>
<li class="menu-item-has-children">
<a href="#">Services</a>
<ul class="sub-menu">
<li><a href="#">Thing 1</a></li>
<li><a href="#">Thing 2</a></li>
</ul>
</li>
<li class="menu-item-has-children">
<a href="#">Services</a>
<ul class="sub-menu visible">
<li><a href="#">Widget 1</a></li>
<li><a href="#">Widget 2</a></li>
</ul>
</li>
</ul>
这是我当前的jquery
// main menu toggle of sub-menu
$(".menu-item-has-children > a").click(function(e) {
// remove .visible from other .sub-menu
$(".sub-menu").removeClass('visible');
// toggle the .visible class on the current parent item
$(this).next(".sub-menu").toggleClass('visible');
// prevent the <a> from default behavior
e.preventDefault();
});
2条答案
按热度按时间cvxl0en21#
这不起作用,因为
$(".sub-menu")
选择了 all 子菜单,并从每个子菜单中删除了visible
类。接下来toggleClass
再次添加(切换)删除的visible
类。如果只想从其他元素中删除
visible
,必须向上遍历层次结构,从父元素中获取所有同级元素。现在,visible
只从其他子菜单中删除:x一个一个一个一个x一个一个二个一个x一个一个三个一个
ttcibm8c2#
如果在removeClass之后使用,则toggleClass始终为添加类