zTree【简单介绍】 zTree 是利用 JQuery 的核心代码,实现一套能完毕大部分经常使用功能的 Tree 插件 兼容 IE、FireFox、Chrome 等浏览器 在一个页面内可同一时候生成多个 Tree 实例 支持 JSON 数据 支持一次性静态生成 和 Ajax 异步载入 两种方式 支持多种事件响应及反馈 支持 Tree 的节点移动、编辑、删除 支持随意更换皮肤 / 个性化图标(依靠css) 支持极其灵活的 checkbox 或 radio 选择功能 简单的參数配置实现 灵活多变的功能 【官网】 官网地址:http://www.baby666.cn/hunter/index.html 在官网可下面载到zTree的源代码、实例和API,当中作者pdf的API写得很具体 【部分函数和属性介绍】 核心:zTree(setting, [zTreeNodes]) 这个函数接受一个JSON格式的数据对象setting和一个JSON格式的数据对象zTreeNodes,从而建立 Tree。 核心參数:setting zTree 的參数配置都在这里完毕,简单的说:树的样式、事件、訪问路径等都在这里配置 setting 举例: var setting = { showLine: true, checkable: true }; 由于參数太多,详细參数详见zTreeAPI 核心參数:zTreeNodes zTree 的所有节点数据集合,採用由JSON对象组成的数据结构,简单的说:这里使用Json格式保存了树的所有信息 zTreeNodes的格式分为两种:利用Json格式嵌套体现父子关系和Array简单格式 1 带有父子关系的标准 zTreeNodes 举例: var zTreeNodes = [ {"id":1, "name":"test1", "nodes":[ {"id":11, "name":"test11", "nodes":[ {"id":111, "name":"test111"} ]}, {"id":12, "name":"test12"} ]}, ...... ]; 2 带有父子关系的简单 Array 格式(isSimpleData)的 zTreeNodes 举例: var treeNodes = [ {"id":1, "pId":0, "name":"test1"}, {"id":11, "pId":1, "name":"test11"}, {"id":12, "pId":1, "name":"test12"}, {"id":111, "pId":11, "name":"test111"}, ...... ]; 【实例一】(Java代码) 1. 在页面引用zTree的js和css: <!-- ZTree树形插件 --> <link rel="stylesheet" href="<%=root%>/Web/common/css/zTreeStyle/zTreeStyle.css" type="text/css"> <!-- <link rel="stylesheet" href="<%=root%>/Web/common/css/zTreeStyle/zTreeIcons.css" type="text/css"> --> <script type="text/javascript" src="<%=root%>/Web/common/js/jquery-ztree-2.5.min.js"></script> 2. 在script脚本中定义setting和zTreeNodes var setting = { isSimpleData : true, //数据是否採用简单 Array 格式,默认false treeNodeKey : "id", //在isSimpleData格式下,当前节点id属性 treeNodeParentKey : "pId", //在isSimpleData格式下,当前节点的父节点id属性 showLine : true, //是否显示节点间的连线 checkable : true //每一个节点上是否显示 CheckBox }; var treeNodes = [ {"id":1, "pId":0, "name":"test1"}, {"id":11, "pId":1, "name":"test11"}, {"id":12, "pId":1, "name":"test12"}, {"id":111, "pId":11, "name":"test111"}, ]; 3. 在进入页面时生成树结构: var zTree; $(function() { zTree = $("#tree").zTree(setting, treeNodes); }); 4. 最后查看效果: 【实例二】(从后台获取简单格式Json数据) 1. 后台代码封装简单格式Json数据: public void doGetPrivilegeTree() throws IOException{ String s1 = "{id:1, pId:0, name:\"test1\" , open:true}"; String s2 = "{id:2, pId:1, name:\"test2\" , open:true}"; String s3 = "{id:3, pId:1, name:\"test3\" , open:true}"; String s4 = "{id:4, pId:2, name:\"test4\" , open:true}"; List<String> lstTree = new ArrayList<String>(); lstTree.add(s1); lstTree.add(s2); lstTree.add(s3); lstTree.add(s4); //利用Json插件将Array转换成Json格式 response.getWriter().print(JSONArray.fromObject(lstTree).toString()); } 2. 页面使用Ajax获取zTreeNodes数据再生成树 var setting = { isSimpleData : true, //数据是否採用简单 Array 格式,默认false treeNodeKey : "id", //在isSimpleData格式下,当前节点id属性 treeNodeParentKey : "pId", //在isSimpleData格式下,当前节点的父节点id属性 showLine : true, //是否显示节点间的连线 checkable : true //每一个节点上是否显示 CheckBox }; var zTree; var treeNodes; $(function(){ $.ajax({ async : false, cache:false, type: 'POST', dataType : "json", url: root+"/ospm/loginInfo/doGetPrivilegeTree.action",//请求的action路径 error: function () {//请求失败处理函数 alert('请求失败'); }, success:function(data){ //请求成功后处理函数。 alert(data); treeNodes = data; //把后台封装好的简单Json格式赋给treeNodes } }); zTree = $("#tree").zTree(setting, treeNodes); }); 3. 最后显示效果