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实现异步加载图片(懒加载图片一种方式)
Apr 24 jQuery
jQuery zTree树插件动态加载实例代码
May 11 jQuery
Vue中正确使用jQuery的方法
Oct 30 jQuery
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
jQuery pagination分页示例详解
Oct 23 jQuery
jQuery实现的老虎机跑动效果示例
Dec 29 jQuery
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
jquery轻量级数字动画插件countUp.js使用详解
Oct 17 jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
jquery检测上传文件大小示例
Apr 26 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与javascript对多项选择的处理
2006/10/09 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
js综合应用实例简单的表格统计
2013/09/03 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
详解javascript高级定时器
2015/12/31 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
python删除文本中行数标签的方法
2018/05/31 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
EJB的基本架构
2016/09/22 面试题
大学生标准推荐信范文
2013/11/25 职场文书
小学生家长评语集锦
2014/01/30 职场文书
粗加工管理制度
2014/02/04 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
导游欢迎词范文
2015/01/23 职场文书
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server