javascript-菜单在点击时不切换(关闭)

我有一个必须切换的菜单(打开和关闭).同样,如果打开了一个下拉菜单,并且用户单击了其他下拉菜单,则在这种情况下,必须关闭打开的下拉菜单.在我编写的代码中,如果用户单击下一个,则可以实现关闭下拉菜单的方案.但是,单击链接时,下拉菜单不会切换.它只会打开.但是单击同一链接时,它也必须关闭.

js代码.

$('.header-nav-menu .header-menu a.menu-item').click(function(e) {
    e.preventDefault();
    $('.header-nav-menu .header-menu ').removeClass('show-menu-dropdown');
    if ($(this).closest('.header-menu').hasClass('show-menu-dropdown')) {
        $(this).closest('.header-menu').removeClass('show-menu-dropdown');
    } else {
        $(this).closest('.header-menu').addClass('show-menu-dropdown');
    }
});

HTML代码

<div class="header-menu third-level">
    <a href="/en/who-we-are" class="menu-item ">Who We Are </a>
    <li class="no-submenu">
        <div class="menu-item">
            <a href="" class="sub-category active">Our Brand</a>
        </div>
    </li>
</div>
最佳答案
您可以尝试使用布尔变量来保存是否存在该类,然后再将其从所有菜单删除.像这样:

$('.header-nav-menu .header-menu a.menu-item').click(function(e){
    e.preventDefault();
    var hasClass = $(this).closest('.header-menu').hasClass('show-menu-dropdown');
        $('.header-nav-menu .header-menu ').removeClass('show-menu-dropdown');

    if (hasClass){
         $(this).closest('.header-menu').removeClass('show-menu-dropdown')

    }else{
        $(this).closest('.header-menu').addClass('show-menu-dropdown')


    }

})

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...