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实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
jQuery+Ajax实现用户名重名实时检测
Jun 01 jQuery
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 jQuery
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 jQuery
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
深入分析jQuery.one() 函数
Jun 03 jQuery
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 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
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
javascript实现的网页局布刷新效果
2008/12/01 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
python字典排序的方法
2019/10/12 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
Spy++的使用方法及下载教程
2021/01/29 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
继承权公证书
2014/04/09 职场文书
人代会标语
2014/06/30 职场文书
旷课检讨书500字
2014/10/14 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
思想品德课教学反思
2016/02/24 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers