Jquery 关闭除活动子菜单外的所有子菜单
我使用以下html代码来显示带有子菜单的导航菜单,并使用以下jQuery代码来打开/关闭子菜单:Jquery 关闭除活动子菜单外的所有子菜单,jquery,html,drop-down-menu,slidetoggle,submenu,Jquery,Html,Drop Down Menu,Slidetoggle,Submenu,我使用以下html代码来显示带有子菜单的导航菜单,并使用以下jQuery代码来打开/关闭子菜单: var容器=$('.nav菜单'); container.find('.toggle')。单击(函数(e){ var_this=$(this); e、 预防默认值(); _this.next(“.sub-menu”).slideToggle(); $activeUl=_this.parent('li'); $parentsUl=$activeUl.parents('ul'); $('ul.sub-
var容器=$('.nav菜单');
container.find('.toggle')。单击(函数(e){
var_this=$(this);
e、 预防默认值();
_this.next(“.sub-menu”).slideToggle();
$activeUl=_this.parent('li');
$parentsUl=$activeUl.parents('ul');
$('ul.sub-menu',container).not($activeUl.slideUp();
});代码>
-
第1.1项
第1.2项
第1.3项
第2.1项
第2.2项
第2.3项
第3.1项
第3.2项
第3.3项
您可以尝试使用.not()
container.find('.toggle').click(function(e) {
e.preventDefault();
var _this = $(this);
$('.sub-menu').not(_this.next('.sub-menu')).slideUp();
_this.next('.sub-menu').slideToggle();
});
在$activeUl=\u this.parent('li')
行中,您正在选择父li
元素,然后尝试将其从所选中否定。而不是($activeUl)
这不起作用,因为未切换父元素。您应该否定同级ul
:
哎呀!真是个错误!谢谢还有一个问题。如果子菜单中有子菜单,如何在$('ul.sub-menu',$container).not($menu).slideUp()
中的not
函数中将其定位。我说清楚了吗?
$container.find('.toggle').click(function (e) {
var $menu = $(this).next('.sub-menu').slideToggle();
$('ul.sub-menu', $container).not($menu).slideUp();
e.preventDefault();
});