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-

我使用以下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-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();
});