如何在所选元素上添加类并从其他元素中删除?

时间:2018-11-08 12:43:49

标签: jquery menu anchor

这是我的HTML:

<ul class="menu menu-primary">
    <li class="current has-children">
        <a href="">Home</a>
        <span class="menu-item-toggle">
            <span></span>
        </span>
        <ul class="sub-menu">
            <li class="current-children"><a href="" class="">Homepage-1</a></li>
            <li class=""><a href="" class="">Home-2</a></li>
            <li class=""><a href="" class="">Home-3</a></li>
        </ul>
    </li>
</ul>

现在,我要的是单击“菜单项切换”,将“菜单扩展”添加到相应的“ li.has-children”中,并从其他li中删除。

这里是我的脚本:

$('ul.menu li.has-children').each(function () {
    var menuItem = $(this)
    var menuToggle = $('<span class="menu-item-toggle"><span></span></span>')

    menuToggle.insertAfter(menuItem.find('> a')).on('click', function () {
        menuItem.toggleClass('menu-expand');
        menuItem.nextAll().removeClass('menu-expand');
        menuItem.prevAll().removeClass('menu-expand');
    })
})

2 个答案:

答案 0 :(得分:0)

尝试一下

$('ul.menu li.has-children').click(function () {
    $('ul.menu li.has-children').each(function () {
        $(this).removeClass('menu-expand');
    });
    $(this).addClass('menu-expand');
});

答案 1 :(得分:0)

您可以通过以下方式进行操作。

 $('ul.menu li.has-children').each(function () {
        var menuItem = $(this)
        var menuToggle = $('<span class="menu-item-toggle"><span></span></span>')
        $(this).removeClass('menu-expand');
        menuToggle.insertAfter(menuItem.find('> a')).on('click', function () {
            menuItem.toggleClass('menu-expand');
            menuItem.nextAll().removeClass('menu-expand');
            menuItem.prevAll().removeClass('menu-expand');
            $(this).addClass('menu-expand');
        })
    })