前端实战:基于jQuery递归实现通用树形组织菜单(可直接复用)

在后台管理系统、OA系统、企业级项目中,树形菜单、组织架构树是出现频率极高的功能。常见用于部门层级展示、人员架构、权限菜单、分类层级等场景。

很多新手开发树形结构时,会被多层嵌套递归渲染难住,不知道如何处理无限层级的父子关系。

今天给大家分享一套极简、轻量、无插件的 jQuery 树形菜单解决方案:通过扁平化数组 + 递归函数实现无限层级树结构,自带展开/收起动画、旋转箭头交互,代码干净易懂,可直接落地到项目!

一、项目功能介绍

本次树形菜单 Demo 实现了企业开发常用的核心能力,完全贴合实际业务场景:

  • 无限层级递归渲染:支持公司、部门、小组、人员多层级嵌套,不限层级深度
  • 扁平化数据结构:采用业界标准的 id + parentId 结构,适配后端返回数据
  • 优雅展开收起交互:点击箭头平滑切换,自带旋转动画过渡
  • 分层缩进视觉:层级缩进清晰,完美区分父子节点关系
  • 原生jQuery实现:无需引入任何树形插件,轻量化、无冗余、兼容性极强
    二、完整可运行源码
    以下是优化整理后的完整代码,结构清晰、注释齐全,新建 HTML 文件,放入 jQuery 文件即可直接运行。

jQuery无限层级树状菜单
三、核心代码逻辑详解 1、标准扁平化数据结构 项目采用企业开发最通用的id + parentId 扁平化数据结构,不需要后端返回嵌套树形,前端自行递归组装,极大减轻后端压力。 核心规则: - 根节点:parentId: null - 子节点:parentId 对应父节点的 id - 支持无限层级嵌套,适配任意深度组织架构 2、递归渲染核心函数 arborescence 递归函数是整个树形结构的核心: 1、通过 filter 筛选出当前层级的所有子节点; 2、遍历子节点,再次调用自身递归获取下级子节点HTML; 3、逐层拼接 HTML,最终组装成完整树形结构。 这种写法是前端树形结构的经典标准答案,面试和项目开发高频使用。 3、展开收起动画交互 摒弃生硬的显示隐藏,采用 jQuery 自带的 slideToggle 实现平滑过渡,搭配 CSS 旋转动画: - 默认所有子节点折叠隐藏 - 点击箭头,竖向平滑展开/收起 - 箭头同步旋转90°,视觉交互直观清晰 四、代码优势与亮点 - 零插件依赖:纯 jQuery + 原生递归,无需引入 zTree、treeview 等插件,轻量化无负担 - 适配真实业务:数据结构完全对接后端接口,可直接替换接口数据使用 - 无限层级通用:不限部门、人员嵌套层级,适配分类树、菜单树、组织树 - 交互体验优秀:动画过渡柔和,层级缩进清晰,UI 简洁商务 - 极易二次开发:可快速拓展节点选中、点击高亮、节点删除、新增、搜索筛选功能 五、项目拓展方向 基于当前基础树形结构,可快速拓展企业级完整功能: 1. 节点点击高亮:点击部门/人员节点增加选中样式 2. 树形搜索筛选:输入关键词模糊匹配节点,自动展开对应层级 3. 新增/删除节点:动态修改数组数据,局部刷新树形结构 4. 默认展开指定层级:默认展开一级/二级节点,提升体验 5. 区分节点图标:部门、人员、分组配置不同图标 六、总结 1、前端树形结构的核心原理就是 扁平化数据 + 递归渲染,掌握这套逻辑可以应对所有树形场景; 2、本案例代码精简、无冗余、无 bug,完全适配后台管理系统、OA、CRM 等企业项目; 3、相比臃肿的第三方树形插件,原生递归方案更轻量、自定义程度更高、性能更好。

相关推荐
计算机魔术师1 小时前
英伟达据报洽谈向 Mira Murati 的 Thinking Machines Lab 投资 25 亿美元
前端
变与不变8062 小时前
js函数与封装详细解答
前端·javascript·vue.js
南雨北斗2 小时前
Vue 3 项目中的拦截器的作用和写法(动态设置响应头适配表单文件上传)
前端
涛涛ing2 小时前
125秒到10秒:TypeScript 7.0用Go重写编译器,前端圈等了14年
前端
爱勇宝2 小时前
初创公司的“自己人”,到底能当多久?
前端·后端·程序员
晴天162 小时前
前端模块化规范全景解析:CommonJS、AMD、ESM、UMD
前端
三十而立洋3 小时前
深入理解 npm:从核心机制到常用命令全解析
前端·前端工程化
Canace3 小时前
最新版 Codex 工作流的问题
前端·人工智能·agent
AZaLEan__3 小时前
事件循环讲解
javascript