我有一个包含子菜单的菜单,然后每个子菜单项都包含一些其他子菜单。像这样:
<div class="mobile-menu-wrapper">
<ul>
<li>Item 1</li>
<li class="menu-item-has-children">
Item 2
<ul class="sub-menu">
<li>sub-item 1</li>
<li>sub-item 2</li>
<li class="menu-item-has-children">
sub-item 3
<ul class="sub-menu">
<li>sub-sub-item 1</li>
<li>sub-sub-item 2</li>
<li>sub-sub-item 3</li>
<li>sub-sub-item 4</li>
</ul>
</li>
<li>sub-item 4</li>
<li>sub-item 5</li>
</ul>
</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
</ul>
</div>
这就是我的JavaScript的样子
var dropdownToggle = "<span class='btn-sm btn btn-default toggle-submenu'>+</span>";
var openSubmenu = "<span class='btn-sm btn btn-default open-submenu'>></span>";
$( '.menu-item-has-children > a, .page_item_has_children > a' ).after( dropdownToggle );
$( '.menu-item-has-children > ul > .menu-item-has-children > a, .page_item_has_children > ul > .page_item_has_children > a' ).after( openSubmenu );
$("body").on('click', ".toggle-submenu", function() {
$(".mobile-menu-wrapper").find(".sub-menu").slideUp().removeClass("active");
$(this).parent().find(".sub-menu").slideToggle().addClass("active");
$(".mobile-menu-wrapper").parent().find("ul li ul li ul").hide();
//$(this).parent().parent().find(".sub-menu").not(this+" .sub-menu").slideToggle().removeClass("active");
});
$("body").on('click', ".open-submenu", function() {
$(this).parent().parent().find(".sub-menu").animate({width: 'hide'}).addClass("active");
$(this).parent().find(".sub-menu").animate({width: 'toggle'}).addClass("active");
});
我想做的是,当我单击以打开一个子菜单时,它应该关闭所有其他子菜单并打开我单击的那个子菜单。 这项工作正常,但是这里的问题是,当我在打开相同的菜单项后单击该菜单项时,它没有关闭。