news 2026/2/10 2:50:41

jQuery EasyUI 树形菜单 - 创建带复选框的树形菜单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jQuery EasyUI 树形菜单 - 创建带复选框的树形菜单

下面直接给你最实用、最常见的创建带复选框的树形菜单(Checkbox Tree)方法,jQuery EasyUI 的tree组件内置支持复选框,复制粘贴就能做出权限分配、部门多选、商品分类批量选择等场景,领导最爱的“勾选父节点自动勾选子节点、级联选择”效果全都有!

方法1:最简单最常用 - 基本带复选框的树形菜单(推荐现在就用这个,3秒出效果)

<!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:30px;"><divstyle="margin-bottom:15px;"><ahref="javascript:void(0)"class="easyui-linkbutton c6"iconCls="icon-ok"onclick="getChecked()">获取勾选节点</a><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-reload"onclick="reloadTree()">刷新树</a><ahref="javascript:void(0)"class="easyui-linkbutton c3"iconCls="icon-sum"onclick="checkAll()">全选</a><ahref="javascript:void(0)"class="easyui-linkbutton c8"iconCls="icon-cancel"onclick="uncheckAll()">全不选</a></div><!-- 关键:checkbox:true 开启复选框 --><ulid="checkTree"class="easyui-tree"data-options="url:'get_menu_data.php', <!-- 可以是静态标记或异步加载 --> method:'get', animate:true, lines:true, checkbox:true, <!-- 开启所有节点复选框 --> cascadeCheck:true, <!-- 级联选择(父选子自动选) --> onlyLeafCheck:false <!-- false=所有节点都有复选框,true=只有叶子节点有 -->"><!-- 如果不想异步,可以直接用标记写静态树 --><!-- <li> <span>系统管理</span> <ul> <li><span>用户管理</span></li> <li><span>角色管理</span></li> <li><span>部门管理</span></li> </ul> </li> <li><span>商品管理</span></li> --></ul></div><script>// 获取所有勾选的节点(包括半选的父节点)functiongetChecked(){varnodes=$('#checkTree').tree('getChecked');// 完全勾选的节点varindeterminate=$('#checkTree').tree('getChecked','indeterminate');// 半选节点(子节点部分勾选)varallChecked=nodes.concat(indeterminate);vartexts=[];varids=[];$.each(allChecked,function(i,node){texts.push(node.text);if(node.id)ids.push(node.id);});$.messager.alert('勾选的节点','<b>节点文本:</b>'+texts.join(', ')+'<br><br><b>节点ID:</b>'+ids.join(', '),'info');}// 全选所有节点functioncheckAll(){varroots=$('#checkTree').tree('getRoots');$.each(roots,function(i,root){$('#checkTree').tree('check',root.target);});}// 全不选functionuncheckAll(){varroots=$('#checkTree').tree('getRoots');$.each(roots,function(i,root){$('#checkTree').tree('uncheck',root.target);});}// 刷新树functionreloadTree(){$('#checkTree').tree('reload');}// 监听勾选事件(可选)$('#checkTree').tree({onCheck:function(node,checked){console.log('节点 '+node.text+(checked?' 被勾选':' 被取消勾选'));},onLoadSuccess:function(node,data){// 可以在这里根据权限回显已勾选的节点// $('#checkTree').tree('check', $('#checkTree').tree('find', 11).target);}});</script></body></html>

效果亮点:

  • 所有节点左边都有复选框
  • 勾选父节点 → 子节点自动全选(cascadeCheck:true)
  • 勾选所有子节点 → 父节点自动半选(灰色勾)
  • 支持异步加载(url方式)
  • getChecked()返回完全勾选节点,getChecked('indeterminate')返回半选节点

方法2:只有叶子节点带复选框(经典权限分配场景)

data-options=" checkbox:true,onlyLeafCheck:true,<!--关键:只有叶子节点显示复选框-->cascadeCheck:true"

方法3:关闭级联选择(独立勾选,不影响父子)

cascadeCheck:false<!--父节点和子节点互不影响-->

方法4:动态设置节点勾选状态(权限回显超级常用)

// 勾选指定节点(根据id)varnode=$('#checkTree').tree('find',11);if(node){$('#checkTree').tree('check',node.target);}// 取消勾选$('#checkTree').tree('uncheck',node.target);// 半选状态(一般不用手动设,级联自动处理)$('#checkTree').tree('check',node.target);// 父节点子节点部分选时自动半选

方法5:结合对话框使用(权限分配弹窗)

<divid="permDlg"class="easyui-dialog"title="分配权限"style="width:400px;height:500px;"data-options="modal:true,closed:true,buttons:[{ text:'保存',iconCls:'icon-save',handler:function(){ var checked = $('#checkTree').tree('getChecked'); var permIds = []; $.each(checked, function(i,n){ permIds.push(n.id); }); // ajax提交 permIds 到服务器 alert('保存权限ID:'+ permIds.join(',')); $('#permDlg').dialog('close'); } },{ text:'取消',handler:function(){$('#permDlg').dialog('close');} }]"><ulid="checkTree"class="easyui-tree"data-options="url:'get_all_menu.php',checkbox:true,onlyLeafCheck:true,cascadeCheck:true,lines:true"></ul></div><!-- 打开权限分配窗口 --><ahref="javascript:void(0)"class="easyui-linkbutton"onclick="$('#permDlg').dialog('open')">分配权限</a>

你现在直接复制方法1的完整代码运行,就能看到一个超级专业的带复选框树形菜单了!
特别适合:角色权限分配、多选部门、批量选择分类等场景。

想要我给你一个完整的权限分配示例(异步加载菜单树 + 回显已分配权限 + 保存到服务器)?
或者你告诉我你的具体需求(比如“只有叶子节点复选框”“不级联”“带搜索过滤”),我2分钟发你精准代码,复制就能跑!

快说说你想怎么用,我手把手帮你搞定,5分钟内看到完美带复选框的树形菜单!

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

SSE换环境导致502问题

华为云 必须加固定请求头 headers.add("Content-Type", "text/event-stream");headers.add("Transfer-Encoding", "chunked");阿里云 // 阿里云不可以加 Transfer-Encoding&#xff0c;不然阿里云原生网关报错 502 // 可能原因 阿里云…

作者头像 李华
网站建设 2026/2/5 5:43:20

同花顺短线大赚副图 源码分享

{}IF(PERIODNAME<>"日线") { 统计:"该指标只在日线周期下有效。"; RETURN; } r:((ZDMR[-1]BDMR[-1])-(ZDMC[-1]BDMC[-1]))/SHGZG*100; 大单净量:r; D3:EMA(EMA(r,30),3)*30,color00ffff; D5:EMA(EMA(D3,5),3),colorff00cc; D10:EMA(EMA(D3,10),3),co…

作者头像 李华
网站建设 2026/2/5 3:51:43

红烛量能副图 红多头黄加仓

{}VAR1:(VOL / (((HIGH - LOW) * 2) - ABS((CLOSE - OPEN)))); 买盘:IF((CLOSE > OPEN),(VAR1 * (HIGH - LOW)),IF((CLOSE < OPEN),(VAR1 * ((HIGH - OPEN) (CLOSE - LOW))),(VOL / 2))); 卖盘:IF((CLOSE > OPEN),(0 - (VAR1 * ((HIGH - CLOSE) (OPEN - LOW)))),IF(…

作者头像 李华
网站建设 2026/2/6 17:47:07

PostIn从基础到实践(13) - 集成soular,使用soular用户统一认证登录

PostIn 是一款开源免费的接口管理工具&#xff0c;支持免费私有化部署&#xff0c;轻量、简洁易用。本文将详细介绍如何安装PostInsoular&#xff0c;实现统一认证登录。 1、soular 安装 1.1 安装 本文以CentOS操作系统为例。 下载&#xff0c;CentOS安装包下载地址&#x…

作者头像 李华
网站建设 2026/2/8 18:48:34

使用 Docker 一键部署 PaddleOCR-VL: 新手保姆级教程

作者&#xff1a;飞桨开发者技术专家 刘力 | 适合人群&#xff1a;刚接触 PaddleOCR-VL Docker部署的同学 | 学习目标&#xff1a;从一台刚装好的 Ubuntu 24.04 开始&#xff0c;完成 Docker 环境准备 → 拉起 PaddleOCR-VL 服务 → 本机用 HTTP 调用 /layout-parsing 接口…

作者头像 李华
网站建设 2026/2/6 11:09:11

论文查重免费工具排行榜:9大平台+每日不限次推荐

论文查重免费工具排行榜&#xff1a;9大平台每日不限次推荐 核心工具对比速览 工具名称 查重速度 降重效果 特色功能 适用场景 aicheck 极快 重复率可降30% 专业术语保留 高重复率紧急处理 aibiye 中等 逻辑优化明显 学术表达增强 提升论文质量 askpaper 快 …

作者头像 李华