Ztree

在做分配权限模块的时候,遇到了要动态显示树形菜单的情况。查了下都是用Ztree插件做的,但网上好多demo都不能用,今天特意写一篇亲测能用的博客介绍。


建议使用Ztree插件前简单阅读下API文档,链接地址

要显示树形菜单的位置如下,class必须为ztree,不然CSS样式不起作用,无法显示树形菜单

  1. <ul id= "systemTree" class= "ztree" >
  2. </ul>


Ztree的配置参数如下

  1. var setting = {
  2. check:{
  3. enable: true
  4. },
  5. data: {
  6. simpleData:{
  7. enable: true
  8. }
  9. },
  10. callback:{
  11. onCheck:onCheck // 点击属性菜单复选框回调函数
  12. }
  13. };
  14. function onCheck(e,treeId,treeNode){
  15. var treeObj1=$.fn.zTree.getZTreeObj( "systemTree"), // 参数为目标ul的id
  16. nodes1=treeObj1.getCheckedNodes( true), // 获取选中的节点集合
  17. v1= "";
  18. // 将选中的系统菜单加载到右边
  19. var target_table1 = $( ".systemTable"); //要加载的table的位置
  20. //下面的for循环根据自己需要修改
  21. for( var i= 0;i<nodes1.length;i++){
  22. // 一级菜单加粗
  23. if (nodes1[i].getParentNode() == null) {
  24. v1+= '<tr><td class="rightTd" id="'+nodes1[i].id+ '"><b>'+nodes1[i].name+ '</b></td></tr>';
  25. } else {
  26. v1+= '<tr><td class="rightTd" id="'+nodes1[i].id+ '">'+nodes1[i].name+ '</td></tr>';
  27. }
  28. }
  29. //显示在table中
  30. target_table1.html(v1);
  31. }


前台通过ajax调用后台方法查询出菜单集合,需将菜单转换成json字符串形式,如下

  1. bf.append( "[");
  2. for (JSONObject menu : menuList) {
  3. pid = menu.getInteger( "pid");
  4. id = menu.getInteger( "id");
  5. cname = menu.getString( "cname");
  6. // 判断一级菜单
  7. if (pid == 9999) {
  8. bf.append( "{id:"+id+ ",pId:"+pid+ ",name:'"+cname+ "',open:false},");
  9. } else {
  10. bf.append( "{id:"+id+ ",pId:"+pid+ ",name:'"+cname+ "',open:true},");
  11. }
  12. }
  13. String menuStr = "";
  14. if (bf.length() > 0) {
  15. menuStr = bf.substring( 0, bf.length()- 1);
  16. }
  17. menuStr += "]";

字符串bf内为Ztree显示的字符串格式。

假设“个人中心”为父节点,id:100;其子节点“修改密码”pId:100(pId 字段 i 必须大写),插件会自动将修改密码加载到个人中心下的二级菜单中。意思就是子节点的pId必须是父节点的id

open属性,true代表初始化节点数据时,会直接展开此节点。(一般是一级菜单false,二级true)

返回字符串到前台时,需要将字符串转换成json对象后,用$.fn.zTree.init($("#systemTree"), setting, zNodes)调用插件方法即可完成菜单显示,如下

  1. // 系统菜单
  2. var json = eval( "("+data.menuStr+ ")");
  3. var zNodes = json;
  4. $.fn.zTree.init($( "#systemTree"), setting, zNodes);


下面是Ztree插件需要用到的CSS和js文件

  1. <link rel= "stylesheet" href= "js/zTree/zTreeStyle/zTreeStyle.css" type= "text/css">
  2. <script type="text/javascript" src="js/zTree/js/jquery.ztree.core-3.4.js"></script>
  3. <script type= "text/javascript" src= "js/zTree/js/jquery.ztree.excheck-3.5.js"> </script>
  4. <script type= "text/javascript" src= "js/zTree/js/jquery-migrate-1.2.1.js"> </script>

这里jquery.ztree.core-3.4.js版本用的3.4;而jquery.ztree.excheck-3.5.js用的是3.5版本。因为我全用3.5的版本会有错误,我也不清楚是什么原因。
jquery-migrate-1.2.1.js文件是我项目Ztree插件和jquery.min.js文件冲突,需要这个文件来解决,可根据个人需要选择引用

js和css文件链接:http://pan.baidu.com/s/1pLfPQ35 密码:5d7g


### zTree JavaScript 树形控件 使用说明 #### 什么是 ZTreeZTree 是一款基于 jQuery 的强大树形控件插件,支持多种功能配置和扩展。它能够轻松实现复杂的树结构展示,并提供丰富的交互方式。 --- #### 创建带有复选框的树 为了创建一个带复选框的树形控件,可以按照以下方式进行初始化: ```javascript // 初始化 ZTree 控件 var setting = { check: { // 配置复选框选项 enable: true, // 启用复选框 chkStyle: "checkbox", // 设置样式为 checkbox radioType: "all" // 支持全选/半选逻辑 }, data: { simpleData: { enable: true // 开启简单数据模式 } } }; $(document).ready(function () { $.fn.zTree.init($("#treeDemo"), setting, [ { id: 1, pId: 0, name: "父节点1" }, { id: 11, pId: 1, name: "子节点1-1" }, { id: 12, pId: 1, name: "子节点1-2" } ]); }); ``` 上述代码展示了如何通过 `setting` 参数启用复选框并加载简单的树形数据[^1]。 --- #### 动态设置节点状态 可以通过 API 方法动态修改某个节点的状态,例如设置某节点被勾选或取消勾选: ```javascript // 获取已初始化的 ZTree 对象实例 var zTree = $.fn.zTree.getZTreeObj("treeDemo"); // 定位到指定 ID 节点 var node = zTree.getNodeByParam("id", 1); // 勾选该节点 (true 表示勾选, false 取消勾选) zTree.checkNode(node, true, true); zTree.updateNode(node); // 更新节点显示状态 ``` 此部分实现了对特定节点的操作控制。 --- #### 获取当前选中的节点 当用户完成选择后,可通过如下方法获取所有已被勾选的节点列表: ```javascript var treeObj = $.fn.zTree.getZTreeObj("treeDemo"); var checkedNodes = treeObj.getCheckedNodes(true); // 返回所有被勾选的节点数组 console.log(checkedNodes.map(node => node.name)); // 打印名称集合 ``` 这段代码用于提取用户最终选定的结果集。 --- #### 自定义 DOM 结构 除了默认渲染外,还可以利用 `name` 属性来自定义每个节点的内容区域。这种方式允许开发者完全掌控 HTML 输出形式而不局限于内置模板[^2]。 例如,在 JSON 数据源中加入额外字段作为占位符供前端解析使用即可达成目标效果。 --- #### 下载地址及相关资源链接 官方文档提供了详尽的功能描述以及案例演示页面,请访问官网下载最新版本文件包及其依赖库[jQuery](https://jquery.com/)一起引入项目环境当中测试运行。 [ZTree Official Website](http://www.treejs.cn/v3/main.php) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值