You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery折叠菜单从JSON加载仅显示单个子菜单问题及解决

问题原因与解决方案

问题原因

你的折叠菜单逻辑里,使用了$(this).next('dd')来定位子菜单。next()方法只会匹配当前元素紧挨着的下一个同级元素,而Project 1下面有3个连续的<dd>标签,所以点击时只会触发第一个<dd>的显示/隐藏,剩下两个子菜单不会被处理。

解决方法

把所有操作next('dd')的代码,替换成nextUntil('dt')。nextUntil('dt')会选中当前元素之后、直到遇到下一个<dt>之前的所有同级元素,这样就能一次性选中当前项目下的所有子菜单。

修改后的代码

var abc = [
{
project: {
  projectName: 'Project 1',
},
module: [{
  moduleName: "A"
},
{
  moduleName: "B"
},
{
  moduleName: "C"
}]
},
{
project: {
  projectName: 'Project 2'
},
module: [{
  moduleName: "D"
}]
},
{
project: {
  projectName: 'Project 3'
},
module: [{
  moduleName: "E"
},
{
  moduleName: "F"
}]
}];

for(var i=0; i<abc.length; i++) {
    var menu = '<dt><div class="icon"><i class="fa-regular fa-server"></i></div><div class="menu-name">' + abc[i].project.projectName + '</div><span class="more"><i class="fa-regular fa-angle-right"></i></span></dt>'; 

    for(var j=0; j<abc[i].module.length; j++) {
      menu += '<dd><a href="">' + abc[i].module[j].moduleName + '</a></dd>';
    }
    $(".collapsable").append(menu);
  }
  
  var speed = 200;
// 同步修改初始化展开逻辑
$('dt.expanded').nextUntil('dt').slideDown(speed);

$('dt').on('click', function () {
  var that = $(this);

  // Expandable
  if (that.parent().hasClass('expandable')) {
    that.toggleClass('expanded').nextUntil('dt').slideToggle(speed);
  } 
  // Collapsable
  else if (that.parent().hasClass('collapsable')) {
    if (!that.hasClass('expanded')) {
      that.siblings('dt').removeClass('expanded').nextUntil('dt').slideUp(speed);
    }
    that.toggleClass('expanded').nextUntil('dt').slideToggle(speed);
  } 
  // Standard
  else {
    if (!that.hasClass('expanded')) {
      that.siblings('dt').removeClass('expanded').nextUntil('dt').slideUp(speed);
      that.toggleClass('expanded').nextUntil('dt').slideToggle(speed);
    }
  }
});

补充说明

  • nextUntil('dt')会精准选中当前项目下的所有子菜单,不会干扰其他项目的菜单状态
  • 原初始化展开的代码也需要同步修改,否则默认展开的项目同样只会显示第一个子菜单

内容的提问来源于stack exchange,提问作者HiDayurie Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:18:13