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插件制作 自增长输入框实现代码
Aug 17 jQuery
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
jquery学习笔记之无new构建详解
Dec 07 jQuery
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
jQuery实现的卷帘门滑入滑出效果【案例】
Feb 18 jQuery
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
Jun 18 jQuery
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
jquery绑定事件 bind和on的用法与区别分析
May 22 jQuery
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 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 数组入门教程小结
2009/05/20 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
php中autoload的用法总结
2013/11/08 PHP
yii中widget的用法
2014/12/03 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
CI框架常用函数封装实例
2016/11/21 PHP
js类中的公有变量和私有变量
2008/07/24 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
生产厂厂长岗位职责
2013/12/25 职场文书
授权委托书格式
2014/07/31 职场文书
校外活动方案
2014/08/28 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
环卫个人总结
2015/03/03 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python