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实现简单的滑动导航代码(移动端)
May 22 jQuery
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
jQuery EasyUI的TreeGrid查询功能实现方法
Aug 08 jQuery
详解使用jQuery.i18n.properties实现js国际化
May 04 jQuery
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
jquery实现的简单轮播图功能【适合新手】
Aug 17 jQuery
JQuery特殊效果和链式调用操作示例
May 13 jQuery
jquery实现掷骰子小游戏
Oct 24 jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
Jun 02 jQuery
jQuery冲突问题解决方法
Jan 19 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
基于jquery的15款幻灯片插件
2011/04/10 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
Python logging模块用法示例
2018/08/28 Python
Python判断telnet通不通的实例
2019/01/26 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
Python字典底层实现原理详解
2019/12/18 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
python实现马丁策略的实例详解
2021/01/15 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
追悼会上的答谢词
2014/01/10 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
产品质量保证书范本
2015/02/27 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server
python装饰器代码解析
2022/03/23 Python