jQuery zTree插件快速实现目录树


Posted in jQuery onAugust 16, 2019

ztree是JQuery的一个开源树形目录的插件,用来快速构建网站的树形目录结构,并且提供了功能丰富,利于扩展的API。

JQuery ztree官网

只要引入jquery和ztree的库js,然后给ztree提供需要的json数据,并且设置好ztress的属性,就可以即刻展示出树形目录。

总结下来,要使用ztree的话,必须要完成以下几步:

1. 引入库文件

jquery.js

ztree.js

ztree.css

2. 获取数据

你要思考数据来源问题了。

如果要自己从数据库查询树形结构这时候你需要知道oracle的递归查询connect by:oracle中使用start with...connect by prior递归查询树形结构。递归查询简单来讲就是一个表中要具备2个基本字段:id和pid(子节点和父节点id),使用关键字connect by prior来连接id和pid,start with定义数据行查询的初始点,由此获取一棵或者多棵树的树形结构。(这里顺便回忆一下sql里的分组查询group by,跟connect by区分开来。)

拿实际项目举例,项目中要获取如下的目录树:

jQuery zTree插件快速实现目录树

执行以下SQL:

select level, t.dir_id, t.dir_name, t.parent_id
 from T_RES_OWNER t
 where t.IS_FOLDER = '0'
 start with 1 = 1
    and t.parent_id = '0'
    and t.owner_type = '0'
    and t.USER_ID = '136ac7a7ad624692a5b94d93e0634952'
connect by prior t.dir_id = t.parent_id
 order by level asc, t.dir_name asc;

执行结果:

jQuery zTree插件快速实现目录树

3. 封装json输入

下面一段引用ztree官网demo的描述:

jQuery zTree插件快速实现目录树

那么,从接口获取到存放数据的List之后,按照如上组织json给ztree使用即可,参考以下代码:

JSONArray tree = new JSONArray();
  List<ResOwner> list = resOwnerService.selectFolderTree(owner);
  JSONObject obj = null;
  for(ResOwner resOwner : list){
  obj = new JSONObject();
  obj.put("id", resOwner.getDirId());
  obj.put("pId", resOwner.getParentId());
  obj.put("name", resOwner.getDirName().length() > 24?resOwner.getDirName().substring(0,24)+"...":resOwner.getDirName());
  obj.put("icon", SysConf.getString("webapp.jspconfigUrl") + "common/css/zTreeStyle2/img/leaf_ico.png");
  tree.add(obj);
  }
  result.put("success", new Boolean(true));
  result.put("data", tree);
  return result;

4. 设置ztree属性

var zNodes = data.data;
  var setting = {
   view : {
   showLine: false,
   showIcon : true
   },
   data : {
   simpleData : {
    enable : true
   }
   },
   edit: {
   enable: true,
   showRemoveBtn: true,
   showRenameBtn: true,
   removeTitle: "删除",
   renameTitle: "重命名"
   },
   callback: {
   onClick: zTreeOnClick,
   beforeRemove: zTreeBeforeRemove,
   onRename: zTreeOnRename
   }
  };
  //初始化网盘结构树
  $.fn.zTree.init($("#treeDemo_mydoc"), setting, zNodes);
<div class="zTreeDemoBackground2 left" style="width:168px;">
     <ul id="treeDemo_mydoc" class="ztree2" style="width:168px;height: 168px"></ul>
 </div>

可以在setting.callback里面可以设置各种回调函数,用以实现更加复杂的功能,详见ztree api文档经过以上步骤,用ztree实现一个具有基本功能的目录树就完成了。

总结:

实现一个基本功能的目录树其实很简单,说白了就是要提供ztree需要的json数据,然后设置一些属性,其他工作就交给ztree插件来完成了,其难点在于用oracle的connect by获取数据源,另外,页面交互也比较考验JavaScript功底,毕竟很多地方是需要异步加载来提高用户体验。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
Jquery-data的三种用法
Apr 18 jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
jqueryUI tab标签页代码分享
Oct 09 jQuery
Vue中正确使用jQuery的方法
Oct 30 jQuery
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
关于jquery layui弹出层的使用方法
Apr 21 jQuery
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
使vue实现jQuery调用的两种方法
May 12 jQuery
jQuery zTree插件使用简单教程
Aug 16 #jQuery
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
Aug 08 #jQuery
jQuery提示框插件SweetAlert用法分析
Aug 05 #jQuery
jQuery实现的记住帐号密码功能完整示例
Aug 03 #jQuery
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 #jQuery
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 #jQuery
jQuery pager.js 插件动态分页功能实例分析
Aug 02 #jQuery
You might like
php 在文件指定行插入数据的代码
2010/05/08 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
php简单的上传类分享
2016/05/15 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
Javascript注入技巧
2007/06/22 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
python实现文件分组复制到不同目录的例子
2014/06/04 Python
Python去除列表中重复元素的方法
2015/03/20 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
python如何查看系统网络流量的信息
2016/09/12 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
基于Python绘制个人足迹地图
2020/06/01 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
个人自我鉴定怎么写
2013/10/28 职场文书
化学教师自荐信范文
2013/12/28 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
技术员岗位职责范本
2015/04/11 职场文书
入党函调证明材料
2015/06/19 职场文书
Go语言怎么使用变长参数函数
2022/07/15 Golang