Javascript 如何在jQuery中将removeClass添加到选择器

Javascript 如何在jQuery中将removeClass添加到选择器,javascript,jquery,css,Javascript,Jquery,Css,我在一个页面上有两个菜单(如果需要,请参阅下面的JSFIDLE…它是响应性的,因此您需要最小化窗口)。当前,当其中一个打开并单击另一个时,它们都保持打开状态。我该如何编辑javascript,以便一个打开,另一个关闭?我知道我需要添加removeClass,但我不确定如何实现它。非常感谢你的帮助 您可以检查的其他菜单是否处于活动状态。例如,在菜单链接的单击事件中,您可能会遇到如下情况: if($('.menu-link2').hasClass("active")){ $('.menu-

我在一个页面上有两个菜单(如果需要,请参阅下面的JSFIDLE…它是响应性的,因此您需要最小化窗口)。当前,当其中一个打开并单击另一个时,它们都保持打开状态。我该如何编辑javascript,以便一个打开,另一个关闭?我知道我需要添加removeClass,但我不确定如何实现它。非常感谢你的帮助


您可以检查
的其他菜单是否处于活动状态
。例如,在
菜单链接
的单击事件中,您可能会遇到如下情况:

if($('.menu-link2').hasClass("active")){
    $('.menu-link2').trigger("click");
}
然后使用触发另一个菜单上的
单击事件


您的代码可以更简单、更短,您有2条docready语句,并且您两次将body类设置为“js”。这可以缩短。总的来说,HTML的布局方式有点限制,但有一种方法:

$(document).ready(function() {
    $('body').addClass('js');

    var $menulink = $('.menu-link, .menu-link2'), 
        $menuTrigger = $('.has-subnav > a');

    $menulink.click(function(e) {
        var menu_to_toggle = $(this).next(); //which menu will this button toggle?
        e.preventDefault();
        $menulink.not($(this)).removeClass('active'); //remove active class from all menu links, but not this one
        $(this).toggleClass('active'); //toggle active class for this link
        $('.menu.active').not(menu_to_toggle).removeClass('active'); //remove active class from all menus, but not this one
        menu_to_toggle.toggleClass('active'); //toggle active class for the menu
    });

    $menuTrigger.click(function(e) {
        e.preventDefault();
        var $this = $(this);
        $this.toggleClass('active').next('ul').toggleClass('active');
    });
});


注意:该脚本不会重新折叠子菜单。

是否有理由让相同的js代码重复两次?这是复制/粘贴错误吗?@wirey他不知道差异在id
#菜单
#menu2
中,你知道你可以使用
$('#菜单,#menu2')。每个(function(){var$menu=$(this);
,而不是复制你的代码。
$(document).ready(function() {
    $('body').addClass('js');

    var $menulink = $('.menu-link, .menu-link2'), 
        $menuTrigger = $('.has-subnav > a');

    $menulink.click(function(e) {
        var menu_to_toggle = $(this).next(); //which menu will this button toggle?
        e.preventDefault();
        $menulink.not($(this)).removeClass('active'); //remove active class from all menu links, but not this one
        $(this).toggleClass('active'); //toggle active class for this link
        $('.menu.active').not(menu_to_toggle).removeClass('active'); //remove active class from all menus, but not this one
        menu_to_toggle.toggleClass('active'); //toggle active class for the menu
    });

    $menuTrigger.click(function(e) {
        e.preventDefault();
        var $this = $(this);
        $this.toggleClass('active').next('ul').toggleClass('active');
    });
});