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实现鼠标经过显示动画边框特效
Mar 24 jQuery
jquery中each循环的简单回滚操作
May 05 jQuery
jQuery常用选择器详解
Jul 17 jQuery
全面解析jQuery中的$(window)与$(document)的用法区别
Aug 15 jQuery
jquery实现倒计时小应用
Sep 19 jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
JQuery常见节点操作实例分析
May 15 jQuery
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 jQuery
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 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.MVC的模板标签系统(四)
2006/09/05 PHP
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
Python列表计数及插入实例
2014/12/17 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
运动会致辞稿50字
2014/02/04 职场文书
初中生自我鉴定
2014/02/04 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
工会工作先进事迹
2014/08/18 职场文书
高三语文教学反思
2016/02/16 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
导游词之日月潭
2019/11/05 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技