多个菜单.如果我点击其中一个,我希望另一个关闭.(toogle).它一直是开放的,如何修复

Javascript Multiple menu. If i click on one ul i want the other to close. (toogle). It keeps being open, how to fix?

本文关键字:toogle 一直是 何修复 另一个 一个 如果 菜单 我希望      更新时间:2023-09-26

希望你能帮我解决这个问题。我已经烦他好久了

尝试让我的菜单工作。

当我点击一个块,我希望它打开,并关闭另一个选项卡"如果"另一个是打开的。

敬祝jfb

这里是jsfield http://jsfiddle.net/3ZWZu/包含HTML, CSS, JS(jQuery)

$(document).ready(function() {
$('.ac-menu .topLevel').click(function(e) {
    e.preventDefault();
        if($('.ac-menu .topLevel ul').hasClass('open') === true){
        $('.ac-menu .topLevel ul').removeClass('open'); 
        $('.ac-menu .topLevel ul').addClass('closed');  
        $('.ac-menu .topLevel ul').slideUp(300);
    }
        if($(this).next('ul').hasClass('closed') === true){ 
        $(this).next('ul').removeClass('closed');           
        $(this).next('ul').slideDown(300);
        $(this).next('ul').addClass('open');
    }
 });
});

假设你使用JQuery,试试这个:

$(document).ready(function() {    
 $('.ac-menu .topLevel').click(function(e) {
    e.preventDefault();    
    $('.ac-menu ul.open').removeClass('open').addClass('closed').slideUp(300);    
    $(this).next('ul.closed').removeClass('closed').slideDown(300).addClass('open');
  });
});

基本上这背后的想法是,使用ul.openul.closed选择器,您将只选择具有特定类集的ul。如果没有,那么JQuery将返回一个空集合,并且不会将这些操作应用到任何东西上——这就是JQuery的工作方式。此外,它允许您连接命令,就像我的示例中所示。

我想你需要那个jsfield

i添加topLevel类代替a href

$(document).ready(function() {
  $('.ac-menu li.topLevel').click(function(e) {
    e.preventDefault();
    var isClosed = $(this).find('ul').hasClass('closed');
    $('.ac-menu li.topLevel ul').removeClass('open').addClass('closed').slideUp(300);
    if( isClosed){
        $(this).find('ul').addClass('open').removeClass('closed').slideDown(300);
    }
 });
});