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插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
jquery中关于bind()方法的使用技巧分享
Mar 30 jQuery
jquery ui sortable拖拽后保存位置
Apr 27 jQuery
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
jQuery扇形定时器插件pietimer使用方法详解
Jul 18 jQuery
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
jquery动态添加带有样式的HTML标签元素方法
Feb 24 jQuery
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
jQuery实现的卷帘门滑入滑出效果【案例】
Feb 18 jQuery
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 jQuery
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
Jquery+javascript实现支付网页数字键盘
Dec 21 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分页函数完整实例代码
2014/09/22 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
地质灾害防治方案
2014/05/14 职场文书
篮球赛口号
2014/06/18 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
社区党建工作总结2015
2015/05/13 职场文书
二审答辩状范文
2015/05/22 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers