增强移动菜单

时间:2018-08-20 16:52:01

标签: javascript html css

我有一个包含子菜单的菜单,然后每个子菜单项都包含一些其他子菜单。像这样:

<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");
});

我想做的是,当我单击以打开一个子菜单时,它应该关闭所有其他子菜单并打开我单击的那个子菜单。 这项工作正常,但是这里的问题是,当我在打开相同的菜单项后单击该菜单项时,它没有关闭。

0 个答案:

没有答案