Usage

1 GitHub 地址 https://github.com/ludo/jquery-treetable/

2 API 地址 http://ludo.cubicphuse.nl/jquery-treetable/

3 jQuery 官网链接 http://plugins.jquery.com/treetable/

引入代码:

<link href="path/to/jquery.treetable.css" rel="stylesheet" type="text/css" /> <script src="path/to/jquery.treetable.js"></script> <script> $("#your_table_id").treetable(); </script>

注意事项:

1  在表格中展示树,每个tr 须拥有 data-tt-id 属性,且属性值必须唯一

When you pasted the above code and adjusted it to reflect your situation, you enabled the possibility of displaying a tree in your table. To make the tree actually display as a tree you have to add data-tt-id and data-tt-parent-id attributes to your table rows (tr).

2  每个子节点必须有一个 data-tt-parent-id  属性,data-tt-parent-id 的值必须等于 父节点的data-tt-id 值 
3  表格中行的展示必须按照树的展开顺序来,即传递过来的List必须是有序的,且与树展开后的顺序一致

Please note that the plugin expects the rows in the HTML table to be in the same order in which they should be displayed in the tree. For example, suppose you have three nodes: A, B (child of node A) and C (child of node B). If you create rows for these nodes in your HTML table in the following order A - C - B, then the tree will not display correctly. You have to make sure that the rows are in the order A - B - C.

表格HTML代码示例:

<table>   <tr data-tt-id="1">     <td>Parent</td>   </tr>   <tr data-tt-id="2" data-tt-parent-id="1">     <td>Child</td>   </tr> </table>

Configuration

Settings

Setting

Type

Default

Description

branchAttr

string

"ttBranch"

可选,强制打开节点的展开图标,允许将一个没有儿子节点的节点定义为分支节点,在HTML里面以data-tt-branch 属性形式展现.

clickableNodeNames

bool

false

默认false,点击展开图标打开子节点。设置为true时,点击节点名称也打开子节点.

column

int

0

表中要展示为树的列数。

columnElType

string

"td"

展示为树的单元格的类别(th,td or both).

expandable

bool

false

树是否可以展开,可以展开的树包含展开/折叠按钮。

expanderTemplate

string

<a href="#">&nbsp;</a>

展开按钮的html 片段。

indent

int

19

每个分支缩进的像素数。

indenterTemplate

string

<span class="indenter"></span>

折叠按钮的HTML片段

initialState

string

"collapsed"

初始状态,可选值: "expanded" or "collapsed".

nodeIdAttr

string

"ttId"

用来识别节点的数据属性的名称。在HTML里面以 data-tt-id  体现。

parentIdAttr

string

"ttParentId"

用了设置父节点的数据属性的名称. 在HTML里面以data-tt-parent-id 体现。

stringCollapse

string

"Collapse"

折叠按钮的title,国际化使用。

stringExpand

string

"Expand"

展开按钮的title,国际化使用。

Events

Setting

Type

Default

Description

onInitialized

function

null

树初始化完毕后的回调函数.

onNodeCollapse

function

null

节点折叠时的回调函数.

onNodeExpand

function

null

节点展开时的回调函数.

onNodeInitialized

function

null

节点初始化完毕后的回调函数

Public API

Plugin Function

treetable()

treetable() 方法可以传入下面的参数:

options(optional) : 一个描述配置的JS对象。

force(optional):参数为true时强制重新初始化树。

Additional Functions

对树操作的一些方法,附加方法必须通过treetable()方法调用。Eg:折叠id=42的节点, $("#tree").treetable("collapseNode", "42").

collapseAll():折叠所有节点

collapseNode(id):Collapse a single node, identified by id.

expandAll():Expand all nodes at once.

expandNode(id):Expand a single node, identified by id.

loadBranch(node, rows):向树中插入新行(<tr>s), 传入参数 node 为父节点,rows为待插入的行. 如果父节点node为null ,新行被作为父节点插入

move(nodeId, destinationId):Move node nodeId to new parent with destinationId.

node(id):Select a node from the tree. Returns a TreeTable.Node object.

removeNode(id):从树中移除某个节点及其所有子节点

reveal(id):展示树中的某个节点

sortBranch(node)

sortBranch(node, columnOrFunction):根据字母顺序对node 节点的所有子节点排序。Defaults to sorting on the values in the configured tree column (see settings). Pass an optional column number or sorting function as the second argument columnOrFunction. See the tests for examples of custom sorting functions. Does not recursively sort children of children.

unloadBranch(node):Remove nodes/rows (HTML <tr>s) from the tree, with parent node. Note that the parent (node) will not be removed.

Classes

HTML tr class:

expanded:标识节点被展开

collapsed:标识节点被折叠

branch:分支节点,有子节点或者拥有 branchAttr 属性

leaf:叶子节点,无子节点

Examples

Basic Static Tree :

$("#example-basic-static").treetable();

Basic Expandable Tree

$("#example-basic-expandable").treetable({ expandable: true });

Complex Tree With Drag and Drop

$("#example-advanced").treetable({ expandable: true });  // Highlight selected row $("#example-advanced tbody").on("mousedown", "tr", function() {   $(".selected").not(this).removeClass("selected");   $(this).toggleClass("selected"); });  // Drag & Drop Example Code $("#example-advanced .file, #example-advanced .folder").draggable({   helper: "clone",   opacity: .75,   refreshPositions: true,   revert: "invalid",   revertDuration: 300,   scroll: true });  $("#example-advanced .folder").each(function() {   $(this).parents("#example-advanced tr").droppable({     accept: ".file, .folder",     drop: function(e, ui) {       var droppedEl = ui.draggable.parents("tr");       $("#example-advanced").treetable("move", droppedEl.data("ttId"), $(this).data("ttId"));     },     hoverClass: "accept",     over: function(e, ui) {       var droppedEl = ui.draggable.parents("tr");       if(this != droppedEl[0] && !$(this).is(".expanded")) {         $("#example-advanced").treetable("expandNode", $(this).data("ttId"));       }     }   }); });

异步加载:

$("#treetable").treetable({   expandable: true,// 展示  initialState :"expanded",//默认打开所有节点   stringCollapse:'关闭',  stringExpand:'展开',    onNodeExpand: function() {// 分支展开后的回调函数         var node = this;       //判断当前节点是否已经拥有子节点       var childSize = $("#treetable").find("[data-tt-parent-id='" + node.id + "']").length;       if (childSize > 0) {              return;        }       var data = "pageId=" + node.id;        // Render loader/spinner while loading 加载时渲染        $.ajax({            loading : false,            sync: false,// Must be false, otherwise loadBranch happens after showChildren?          url : context + "/document/loadChild.json",          data: data,             success:function(result) {              if(0 == result.code ){                        if(!com.isNull(result.body)){                       if(0 == eval(result.body['chilPages']).length){//不存在子节点                             var $tr = $("#treetable").find("[data-tt-id='" + node.id + "']");                           $tr.attr("data-tt-branch","false");// data-tt-branch 标记当前节点是否是分支节点,在树被初始化的时候生效                           $tr.find("span.indenter").html("");// 移除展开图标                            return;                         }                                               var rows = this.getnereateHtml(result.body['chilPages']);                        $("#treetable").treetable("loadBranch", node, rows);// 插入子节点                        $("#treetable").treetable("expandNode", node.id);// 展开子节点                   }               }else{                  alert(result.tip);              }               }       });       } }); 

Using treetable with PersistJS

https://github.com/jughead/jquery-treetable-ajax-persist/blob/master/example/index.html

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="../src/javascripts/jquery.treetable-ajax-persist.js"></script> <script type="text/javascript" src="../src/javascripts/jquery.treetable-3.0.0.js"></script> <script type="text/javascript" src="../src/javascripts/persist-min.js"></script> <link href="../src/stylesheets/jquery.treetable.css" media="all" rel="stylesheet" type="text/css" /> $("#treetable").agikiTreeTable({// treetable & persistJs     persist: true, // 使用客户端缓存   /*  * 客户端缓存文件名称:采用正则表达式:/^[a-z][a-z0-9_ -]+$/i 进行过滤,  * 名称错误时直接throw new Error("Invalid name");     */  persistStoreName: "docFiles",     // 其他属性同treetable }); 

转载于:https://www.cnblogs.com/telwanggs/p/7434526.html

jQuery.treetable使用及异步加载相关推荐

  1. bootstrap 树形表格渲染慢_layUI之树状表格异步加载组件treetableAsync.js(基于treetable.js)...

    概述 后台框架中使用树状表格是非常常用的操作,layUI本身并没有这种组件. 第三方的treetable.js做到了完美的实现,但是不能实现在双击时异步加载数据,本文就是站在了巨人的肩膀上实现的异步加 ...

  2. Jquery前端分页插件pagination同步加载和异步加载

    上一篇文章介绍了Jquery前端分页插件pagination的基本使用方法和使用案例,大致原理就是一次性加载所有的数据再分页.https://www.jianshu.com/p/a1b8b1db025 ...

  3. 基于jQuery的图片异步加载和预加载实例

    如今的网页中有很多图片,比如相册列表,那么如果一次性读取图片将会瞬间加重服务器的负担,所以我们用jQuery来实现图片的异步加载和预加载功能,这样在页面的可视范围内才会加载图片,当拖动页面至可视界面时 ...

  4. 【JQuery】初始化页面当异步加载时构建页面元素的顺序

    今日帮同事看JQuery页面初始化的一个问题时,由于自己没怎么了解过JQuery,所以遇到了一点小麻烦,实现的效果就是初始化页面时,默认选中页面里某表格数据集的某行数据,这种问题,在Java\Delp ...

  5. 4.3.2 用jQuery进行异步加载(2)

    4.3.2 用jQuery进行异步加载(2) 2008-09-28 16:09 (英)格雷恩(Granc,D.)等著/贺师俊等译 人民邮电出版社 我要评论(5) 字号:T | T 综合评级: 想读(1 ...

  6. 4.3.2 用jQuery进行异步加载(1)

    4.3.2 用jQuery进行异步加载(1) 2008-09-28 16:09 (英)格雷恩(Granc,D.)等著/贺师俊等译 人民邮电出版社 我要评论(0) 字号:T | T 综合评级: 想读(1 ...

  7. Jquery Ztree异步加载树

    1. 下载jquery的JS文件/ztree的CSS文件和JS文件 https://jquery.com/download/ https://gitee.com/zTree/zTree_v3/tree ...

  8. echarts asp mysql 源码_如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)...

    ECharts地图主要用于地理区域数据的可视化,展示不同区域的数据分布信息.ECharts官网提供了中国地图.世界地图等地图数据下载,通过js引入或异步加载json文件的形式调用地图. 本文将结合实例 ...

  9. jq异步实现ajax,用jQuery的AJax实现异步访问、异步加载

    本篇文章实现了用jQuery的AJax实现异步访问和异步加载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. [异步访问] 用一个例子用以说明:点击按钮,将input内用户输入的数据发送给服务端, ...

最新文章

  1. idea 批量修改同一列_学会这个,1秒就可以批量处理文件
  2. 10年磨一剑,软件编程走火入魔之:把简单的功能做个彻彻底底、把劳动成果重复利用...
  3. Java实用面试题及参考答案分享
  4. JVM上的下一个Java——Scala
  5. Java 树的构造算法
  6. Nginx: error while loading shared libraries: libpcre.so.1解决
  7. 11.1-12.31推荐文章汇总
  8. 我的世界MinecraftJava版开服教程(Linux)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器
  9. java有有哪些锁_java编程中锁状态的分类都有哪些
  10. 算法的优雅(五):平衡的爱情
  11. 用过印象笔记和石墨文档后,我发现了适合教师的写作软件
  12. 2020年第十一届蓝桥杯A组省赛
  13. linux 个人云存储_您的私人云管家 联想个人云存储上手体验
  14. L4级自动驾驶,插上车路协同的翅膀才能飞?
  15. 女人撒娇18计玩转男人心
  16. 批量下载:斯坦福大学公开课-编程范式,来源:网易公开课
  17. 票面利率,收益率和到期收益率
  18. c语言程序设计第二版(张磊),C语言程序设计教程(第2版) 教学课件 张磊 第1章 程序设计概述.pdf...
  19. Webpack项目中引入IconFont图标
  20. JavaSript正则表达式收藏

热门文章

  1. Java可变引用,Java – 对可变对象的易失性引用 – 对对象的字段的更新对所有线程都是可见的...
  2. go-plugin入门
  3. Linux vi vim 常用快捷键操作(一)
  4. (18)FPGA时序逻辑与组合逻辑(第4天)
  5. (23)System Verilog设计二分频电路
  6. Vivado定制DDR3 IP核注意事项
  7. python仿真搭建_mock搭建——python——搭建一个简单的mock服务——简单版本
  8. 【STM32】【STM32CubeMX】STM32CubeMX的使用之一:工程建立之点亮你的LED
  9. js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)
  10. Linux阻塞和同步机制