使用zTree树不是第一次了 但是 还是翻阅着之前做的 对照着 使用起来比较方便 这里就把小例子列出来 总结一下使用步骤 这样方便下次使用起来方便一点
使用zTree树的步骤:
1.首先 在jsp中引用zTree相关的 CSS文件和JS文件
2.其次 在jsp中设置zTree的容器,一般一个<ul id="treeDemo" class="ztree" style="display:none;"></ul>就足够了 但是必须要设置id,是为了后续的方便使用
3.再者 在js中 配置zTree的setting 配置信息
4.如果数据是动态的 则将动态获取到的数据 动态组成ztree的节点
5.初始化 zTree树
JSP页面:

1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 4 5 <% 6 String path = request.getContextPath(); 7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 8 %> 9 <!DOCTYPE HTML> 10 <html> 11 <head> 12 <meta charset="utf-8"> 13 <meta name="renderer" content="webkit|ie-comp|ie-stand"> 14 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 15 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0" /> 16 <meta http-equiv="Cache-Control" content="no-siteapp" /> 17 18 19 <link href="../css/H-ui.min.css" rel="stylesheet" type="text/css" /> 20 <link href="../css/H-ui.admin.css" rel="stylesheet" type="text/css" /> 21 <link href="../lib/icheck/icheck.css" rel="stylesheet" type="text/css" /> 22 <link href="../lib/Hui-iconfont/1.0.1/iconfont.css" rel="stylesheet" type="text/css" /> 23 <link rel="stylesheet" href="../bootstrap/css/bootstrap.min.css"/> 24 <link rel="stylesheet" href="../css/bootstrapValidator.min.css"/> 25 26 27 <link rel="stylesheet" href="../css/zTree/demo.css" type="text/css"> 28 <link rel="stylesheet" href="../css/zTree/metroStyle/metroStyle.css" type="text/css"> 29 30 31 32 33 34 <title>添加角色</title> 35 </head> 36 <body style="width: 70%;"> 37 <div class="pd-20"> 38 <form action="" method="post" class="form form-horizontal" id="form-role-add"> 39 <div class="row cl"> 40 <label class="form-label col-2"><span class="c-red">*</span>角色名称:</label> 41 <div class="formControls col-10"> 42 <input type="text" class="input-text" placeholder="" id="roleName" name="roleName" datatype="*4-16" nullmsg="角色名称不能为空"> 43 </div> 44 </div> 45 <div class="row cl"> 46 <label class="form-label col-2">备注:</label> 47 <div class="formControls col-10"> 48 <input type="text" class="input-text" placeholder="" id="" name="roleCre"> 49 </div> 50 </div> 51 52 <div class="content_wrap row cl"> 53 <div class="zTreeDemoBackground" > 54 <button type="button" class="btn btn-success radius fen" ><i class="icon-ok"></i> 分配权限</button> 55 <button type="button" class="btn btn-default radius yin" ><i class="icon-ok"></i> 隐藏权限</button> 56 <ul id="treeDemo" class="ztree" style="display:none;"></ul> 57 </div> 58 </div> 59 <div class="row cl"> 60 <div class="col-10 col-offset-8"> 61 <button type="button" class="btn btn-success radius" id="roleAdd" ><i class="icon-ok"></i> 添加</button> 62 63 <button type="reset" class="btn btn-success radius"><i class="icon-ok"></i>清空</button> 64 </div> 65 </div> 66 </form> 67 </div> 68 <script type="text/javascript" src="../lib/jquery/1.9.1/jquery.min.js"></script> 69 <script type="text/javascript" src="../lib/Validform/5.3.2/Validform.min.js"></script> 70 <script type="text/javascript" src="../lib/icheck/jquery.icheck.min.js"></script> 71 <script type="text/javascript" src="../lib/layer/1.9.3/layer.js"></script> 72 <script type="text/javascript" src="../js/H-ui.js"></script> 73 <script type="text/javascript" src="../js/H-ui.admin.js"></script> 74 <script type="text/javascript" src="../bootstrap/js/bootstrap.min.js"></script> 75 <script type="text/javascript" src="../js/bootstrapValidator.min.js"></script> 76 <script type="text/javascript" src="../js/systeminfo/role/roleadd.js"></script> 77 78 <script type="text/javascript" src="../js/zTree/jquery.ztree.core.js"></script> 79 <script type="text/javascript" src="../js/zTree/jquery.ztree.excheck.js"></script> 80 <script type="text/javascript" src="../js/zTree/jquery.ztree.exedit.js"></script> 81 <script type="text/javascript" src="../js/systeminfo/role/zTreeUse.js"></script> 82 </body> 83 </html>
JS代码:

1 //zTree树的 配置信息
2 var setting = {
3 view: {
4 selectedMulti: true//设置是否同时选中多个节点
5 },
6 check: {
7 enable: true
8 },
9 data: {
10 simpleData: {
11 enable: true//使用简单数据模式。。简单数据模式就是Array
12 }
13 },
14 /* callback: {
15 beforeClick: beforeClick,//捕获单击节点之前的事件回调函数
16 beforeCollapse: beforeCollapse,//用于捕获父节点折叠之前的事件回调函数
17 beforeExpand: beforeExpand,//用于捕获父节点展开之前的事件回调函数
18 onCollapse: onCollapse,//用于捕获节点被折叠的事件回调函数
19 onExpand: onExpand//用于捕获节点被展开的事件回调函数
20 }*/
21
22 };
23
24 function beforeClick(treeId, treeNode) {
25 alert("节点点击之前事件"+treeId+treeNode.name);
26 return true;
27 }
28 function beforeCollapse(treeId, treeNode) {
29 alert("父节点折叠之前事件"+treeId+treeNode.name);
30 return true;
31 }
32 function beforeExpand(treeId, treeNode) {
33 alert("父节点展开之前事件"+treeId+treeNode.name);
34 return true;
35 }
36 function onCollapse(event, treeId, treeNode) {
37 alert("节点折叠事件"+treeId+treeNode.name);
38 }
39 function onExpand(event, treeId, treeNode) {
40 alert("节点展开事件"+treeId+treeNode.name);
41 }
42
43
44 $(document).ready( function () {
45
46 //为添加角色的表单加验证效果
47 $('#form-user-add').bootstrapValidator();
48 /**
49 * 添加角色的按钮
50 */
51 $("#roleAdd").click(function(){
52 $('#form-role-add').bootstrapValidator('validate');//为表单的添加按钮 添加一个绑定表单的方法
53 var roleName = $("input[name='roleName']").val();
54 var roleCre = $("input[name='roleCre']").val();
55 var temp;
56 var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
57 var checkedNodes = treeObj.getCheckedNodes();
58 var nodeArr = new Array();
59 if(treeObj == null){
60 layer.msg('未分配权限!', {
61 icon: 3,
62 time: 2000
63 }, function(){
64 });
65 }else if(checkedNodes.length > 0){//勾选了
66 $.each(checkedNodes,function(i,node){
67 nodeArr.push(node.id);
68 });
69 if(roleName !="" ){
70 $.ajax({url:"roleAdd.htmls",
71 dataType:'json',
72 type:"post",
73 traditional:true,
74 data:{
75 "roleName" : roleName,
76 "roleCre" : roleCre,
77 "nodeArr" : nodeArr,
78 },
79 success:function(data){
80 if(data != null){
81 parent.page.pageSet();
82 }
83 parent.layer.close(parent.indexRoleAdd); //获取到layer的弹出窗 关闭它 indexRoleAdd
84 }});
85 }
86 return false;
87 }else if(checkedNodes.length == 0){
88 parent.layer.msg('未分配权限!', {
89 icon: 3,
90 time: 2000
91 }, function(){
92 });
93 parent.layer.close(parent.indexRoleAdd);
94 }
95 });
96
97 //点击 分配权限 则展示zTree树
98 $(".fen").click(function(){
99 $("#treeDemo").show();
100 $.getJSON("../roleDeal/showAllAuthority.htmls", function(data){//去后台获取到所有权限信息 用于构造zTree树
101 if (null != data) {
102 //获取角色名作为根节点名字
103 var rootName = $("#roleName").val();
104 //自定义的根节点 设置pId为0则为根节点 open代表默认打开的 nocheck表示不对根节点显示单选/复选框
105 var rootNodes = {id:1, pId:0, name:rootName, open:true,nocheck:true};
106 //构建整个权限树
107 var zNodes = [];
108 var d = data;
109 $.each(data,function(i,d){
110 var o = {};
111 o.id = d.authorityId;
112 o.operation = d.operation;
113 o.name = d.authorityName;
114 o.isEnable = d.isEnable;
115 o.updateDate = d.updateDate;
116 o.pId = d.authorityCre;
117 o.nocheck = false;
118 o.open = false;
119 zNodes.push(o);//再将整个的异步加载的数据 子节点给权限树 构成一个完整的树
120 });
121
122 zNodes.push(rootNodes);//首先将根节点给权限树
123 $.fn.zTree.init($("#treeDemo"), setting, zNodes);
124 } else {
125 parent.layer.msg('没有获得项目类型信息,或分类下没有项目信息!', {//弹出框
126 icon: 3,
127 time: 2000 //2秒关闭(如果不配置,默认是3秒)
128 }, function(){
129 //do something
130 });
131 }
132 });
133 });
134 //点击隐藏 则隐藏树
135 $(".yin").click(function(){
136 $("#treeDemo").hide();
137 });
138
139 //为角色名输入框 绑定change事件 狂内容改变 则树根名字变化
140 $("#roleName").change(function(){
141 var roleName = $("input[name='roleName']").val();
142 var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
143 if(treeObj == null ){
144
145 }else{
146 var nodes = treeObj.getNodesByParam("id", 1, null);
147 nodes[0].name =roleName;
148 treeObj.refresh();
149 }
150 });
151
152 } );
如果想要更多的效果 例如节点上增删改等 按钮操作 更多的样式 更多的事件 就可以查看zTree的API
界面效果:

来源:https://www.cnblogs.com/sxdcgaq8080/p/6085456.html
