news 2026/3/13 0:27:25

jQuery EasyUI 树形菜单 - 树形菜单添加节点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jQuery EasyUI 树形菜单 - 树形菜单添加节点

下面直接给你最实用、最常见的树形菜单添加节点方法,jQuery EasyUI 的tree组件支持超级灵活的动态添加节点(新增根节点、新增子节点、插入同级节点等),复制粘贴就能用,领导最爱的“动态部门树新增、菜单管理新增节点、分类无限添加”效果全都有!

方法1:最简单最常用 - 添加子节点(推荐现在就用这个)

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>EasyUI 树形菜单 - 添加节点</title><linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/default/easyui.css"><linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/icon.css"><scripttype="text/javascript"src="https://code.jquery.com/jquery-1.12.4.min.js"></script><scripttype="text/javascript"src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script></head><body><divstyle="margin:20px;"><divstyle="margin-bottom:10px;"><ahref="javascript:void(0)"class="easyui-linkbutton c6"iconCls="icon-add"onclick="appendChild()">在选中节点下添加子节点</a><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-add"onclick="appendSibling()">在选中节点后添加同级节点</a><ahref="javascript:void(0)"class="easyui-linkbutton c3"iconCls="icon-add"onclick="appendRoot()">添加根节点</a><ahref="javascript:void(0)"class="easyui-linkbutton c1"iconCls="icon-remove"onclick="removeNode()">删除选中节点</a></div><ulid="tt"class="easyui-tree"data-options="lines:true, animate:true"><li><span>系统管理</span><ul><li><span>用户管理</span></li><li><span>角色管理</span></li></ul></li><li><span>商品管理</span></li><li><span>订单管理</span></li></ul></div><script>// 获取当前选中节点functiongetSelectedNode(){varnode=$('#tt').tree('getSelected');if(!node){$.messager.alert('提示','请先选中一个节点!','warning');returnnull;}returnnode;}// 方法1:添加子节点(最常用)functionappendChild(){varnode=getSelectedNode();if(!node)return;varnewNode={text:'新节点',iconCls:'icon-folder'};$('#tt').tree('append',{parent:node.target,// 关键:指定父节点data:[newNode]});// 自动展开父节点并选中新节点$('#tt').tree('expand',node.target);varaddedNode=$('#tt').tree('find',newNode.id);// 如果没id,可以用其他方式定位if(addedNode){$('#tt').tree('select',addedNode.target);}}// 方法2:添加同级节点(插入到选中节点之后)functionappendSibling(){varnode=getSelectedNode();if(!node)return;varnewNode={text:'新同级节点'};$('#tt').tree('append',{parent:$('#tt').tree('getParent',node.target),// 获取父节点data:[newNode]});}// 方法3:添加根节点functionappendRoot(){varnewNode={text:'新根节点',state:'closed',// 默认折叠iconCls:'icon-setting'};$('#tt').tree('append',{parent:null,// parent 为 null 表示根节点data:[newNode]});}// 方法4:删除选中节点functionremoveNode(){varnode=getSelectedNode();if(!node)return;$.messager.confirm('确认','确定删除节点 "'+node.text+'" 及其所有子节点吗?',function(r){if(r){$('#tt').tree('remove',node.target);}});}</script></body></html>

效果亮点:

  • “在选中节点下添加子节点”:最常用,部门树新增下级部门
  • “添加同级节点”:插入到当前节点后面
  • “添加根节点”:新增一级菜单
  • 支持删除节点(带确认)
  • 新节点自动展开并选中

方法2:异步树中添加节点(结合后台保存)

functionappendChildAsync(){varnode=getSelectedNode();if(!node)return;// 先本地添加(乐观更新)vartempNode={text:'新建节点(保存中...)'};$('#tt').tree('append',{parent:node.target,data:[tempNode]});// 发请求保存到服务器$.post('add_node.php',{parent_id:node.id,name:'新节点'},function(res){if(res.success){// 更新节点为服务器返回的真实数据varaddedNode=$('#tt').tree('find',tempNode.id);// 临时节点$('#tt').tree('update',{target:addedNode.target,text:res.node.name,id:res.node.id,iconCls:res.node.icon});$.messager.show({title:'成功',msg:'节点添加成功'});}else{// 失败回滚$('#tt').tree('remove',addedNode.target);$.messager.alert('错误',res.msg);}},'json');}

方法3:插入节点到指定位置(insert 方法)

// 在选中节点之前插入$('#tt').tree('insert',{before:node.target,data:{text:'插入到前面'}});// 在选中节点之后插入$('#tt').tree('insert',{after:node.target,data:{text:'插入到后面'}});

方法4:右键菜单添加节点(更专业)

$('#tt').tree({onContextMenu:function(e,node){e.preventDefault();$('#mm').menu('show',{left:e.pageX,top:e.pageY});$('#tt').tree('select',node.target);}});// 右键菜单HTML<div id="mm"class="easyui-menu"><div onclick="appendChild()"iconCls="icon-add">添加子节点</div><div onclick="appendSibling()"iconCls="icon-add">添加同级节点</div><divclass="menu-sep"></div><div onclick="removeNode()"iconCls="icon-remove">删除节点</div></div>

你现在直接复制方法1的完整代码运行,就能看到一个支持动态添加/删除节点的树形菜单了!
特别适合:菜单管理、部门组织架构、商品分类管理等需要动态增删的场景。

想要我给你一个完整的示例(异步树 + 添加节点 + 右键菜单 + 保存到服务器)?
或者你告诉我你想怎么添加(比如“弹窗输入节点名称”“拖拽排序后添加”“批量导入”),我2分钟发你精准代码,复制就能跑!

快说说你的具体需求,我手把手帮你搞定,5分钟内看到完美动态添加节点效果!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/11 22:39:49

jQuery EasyUI 树形菜单 - 树形网格动态加载

jQuery EasyUI 树形网格&#xff08;TreeGrid&#xff09; - 动态加载&#xff08;按需加载子节点&#xff09; jQuery EasyUI TreeGrid 支持两种常见的“动态加载”方式&#xff1a; 服务器端按需加载&#xff08;On-Demand Loading / Remote Lazy Loading&#xff09; 最常见…

作者头像 李华
网站建设 2026/3/9 17:09:28

测试网部署全流程:自研 dApp 上线 Goerli 测试链并验证功能

Goerli&#xff08; Grli &#xff09;是以太坊官方推荐的 PoA 测试网&#xff0c;兼容以太坊主网生态&#xff0c;是 dApp 上线主网前验证功能、测试交互的核心环境。本文以「Hardhat 框架 Solidity 智能合约 React 前端」为例&#xff0c;完整讲解 dApp 部署到 Goerli 测试…

作者头像 李华
网站建设 2026/3/8 2:22:02

纯电动汽车仿真:从模型搭建到动力性与经济性分析

纯电动汽车仿真、纯电动公交、纯电动客车、纯电动汽车动力性仿真、经济性仿真。 模型包括电机、电池、车辆模型。 有两种模型2选1&#xff1a; 1 完全用matlab simulink搭建的模型。 2用simscape搭建的车辆模型。 项目开发使用的模型&#xff0c;精确度高&#xff0c;不是随便乱…

作者头像 李华
网站建设 2026/3/12 18:53:11

新能源控制器中多峰值MPPT寻优仿真模型探索

新能源控制器&#xff0c;多峰值mppt寻优仿真模型&#xff0c;传统扰动电导等寻优无法用在局部遮阴下&#xff0c;而粒子群pso算法克服了这个问题&#xff0c;可用于自行研究。 压缩包附带使用说明及解析文档&#xff0c;包括传统扰动与粒子群算法模型。在新能源领域&#xff0…

作者头像 李华
网站建设 2026/3/9 22:22:15

双向DC/DC磷酸铁锂蓄电池充放电储能的Matlab/Simulink仿真模型探索

双向DC/DC磷酸铁锂蓄电池充放电储能matlab/simulink仿真模型&#xff0c;采用双闭环控制&#xff0c;充放电电流&#xff0c;电压和功率均可控&#xff0c;电流为负则充电&#xff0c;电流为正则放电&#xff0c;可以控制电流实现充放电 &#xff08;1&#xff09;完整复现文献…

作者头像 李华