简介

treeTable是跨浏览器、性能很高的jquery的树表组件,它使用非常简单,只需要引用jquery库和一个js文件,接口也很简单。

优点

  1. 兼容主流浏览器: 支持IE6和IE6+, Firefox, chrome, Opera, Safari
  2. 接口简洁: 在普通表格的基础上增加父子关系的自定义标签就可以
  3. 组件性能高: 内部实现了只绑定了table的事件、使用了css sprite合并图片等
  4. 提供两种风格: 通过参数来设置风格

效果图

接口

配置参数

    • theme: string {主题,有两个选项:default、vsStyle. 默认:default}
    • expandLevel: int {树表的展开层次. 默认:1}
    • column: int {可控制列的序号. 默认:0,即第一列}
    • onSelect: function {拥有controller自定义属性的元素的点击事件,return false则中止展开. 默认值:
      1. function($treeTable, id) { //$treeTable 当前树表的jquery对象. //id 当前行的id //返回false,则直接退出,不会激发后面的beforeExpand和子节点的展开 return true; }
    • beforeExpand: {展开子节点前触发的事件, 默认值:
  1. function($treeTable, id) { //$treeTable 当前树表的jquery对象. //id 当前行的id }

属性说明

  • id: string 行的id
  • pId: string 父行的id
  • controller: bool 指定某一个元素是否可以控制行的展开
  • hasChild: bool 指定某一个tr元素是否有孩子(动态加载需用到)
  • isFirstOne: bool 指定某一个tr元素是否是第一个孩子(自动生成属性,只读)
  • isLastOne: bool 指定某一个tr元素是否是最后一个孩子(自动生成属性,只读)
  • prevId: string 前一个兄弟节点的id(自动生成属性,只读)
  • depth: string 当前行的深度(自动生成属性,只读)

使用方式

$("#元素id").treeTable({}) 如:

引用的文件

  1. <script src="/script/jquery.js" type="text/javascript"> </script>
    <script src="/script/treeTable/jquery.treeTable.js" type="text/javascript"> </script>
  2. js代码
  1. <script type="text/javascript">
  2. $(function(){
  3. var option = {
  4. theme:'vsStyle',
  5. expandLevel : 2,
  6. beforeExpand : function($treeTable, id) {
  7. //判断id是否已经有了孩子节点,如果有了就不再加载,这样就可以起到缓存的作用
  8. if ($('.' + id, $treeTable).length) { return; }
  9. //这里的html可以是ajax请求
  10. var html = '<tr id="8" pId="6"><td>5.1</td><td>可以是ajax请求来的内容</td></tr>'
  11. + '<tr id="9" pId="6"><td>5.2</td><td>动态的内容</td></tr>';
  12.  
  13. $treeTable.addChilds(html);
  14. },
  15. onSelect : function($treeTable, id) {
  16. window.console && console.log('onSelect:' + id);
  17.  
  18. }
  19.  
  20. };
  21. $('#treeTable1').treeTable(option);
  22. });
  23. </script>

html结构

  1. <table id="treeTable1" style="width: 100%">
  2. <tr>
  3. <td style="width: 200px;">
  4. 标题</td>
  5. <td>
  6. 内容</td>
  7. </tr>
  8. <tr id="1">
  9. <td>
  10. <span controller="true">1</span></td>
  11. <td>
  12. 内容</td>
  13. </tr>
  14. <tr id="2" pid="1">
  15. <td>
  16. <span controller="true">2</span></td>
  17. <td>
  18. 内容</td>
  19. </tr>
  20. <tr id="3" pid="2">
  21. <td>
  22. 3</td>
  23. <td>
  24. 内容</td>
  25. </tr>
  26. <tr id="4" pid="2">
  27. <td>
  28. 4</td>
  29. <td>
  30. 内容</td>
  31. </tr>
  32. <tr id="5" pid="4">
  33. <td>
  34. 4.1</td>
  35. <td>
  36. 内容</td>
  37. </tr>
  38. <tr id="6" pid="1" haschild="true">
  39. <td>
  40. 5</td>
  41. <td>
  42. 注意这个节点是动态加载的</td>
  43. </tr>
  44. <tr id="7">
  45. <td>
  46. 8</td>
  47. <td>
  48. 内容</td>
  49. </tr>
  50. </table>

关于

作者: benzhan(詹潮江)

版本变更

1.0版本:创建基本功能。(2011-05-04)

1.1版本:(2011-05-08)

  1. 这个版本提高了性能,做了以下改进:
  2.  
  3. * 1、使用了Css Sprite Tools 合并了分散的图标
    * 2、使用了.id的方式来代替原来[pId=id],这样选择孩子效率更高
    * 3、把css剥离出来,增加动态添加css,每次家在前判断是否添加过
    关于第二点,非常感谢onli同学的提醒。但我并没有直接修改我的接口,直接除去pId,而是在第一次遍历时将pId作为class名添加到节点中。这样有两个好处: 1)接口可读性会比较好,pIdclass更容易理解。 2)第二点,如果直接使用class,那节点本来就有样式,这样获取到的className还要去分解空格得到pId,挺麻烦的。

1.3版本:(2011-05-09)

  1. 这个版本扩展了事件,做了以下改进:
    * 1、增加onSelect事件,onSelect: function($treeTable, id){}
    * 2、增加beforeExpand事件,beforeExpand : function($treeTable, id){} 动态加载节点就靠beforeExpand 事件了。

1.4.2版本:(2011-09-03)

  1. 这个版本修复了bug,做了以下改进:
    * 1、修复了多个tableTree不在同个页面的bug,并且可以让不同的tableTree使用不同的主题。
    * 2、增加了controller的自定义标签来控制可点击的区域。

jquery treeTable插件使用细则的更多相关文章

  1. 遍历json创建树状表(首先的前提条件是要引入jquery的jquery treeTable插件)

    "root":{ "children":[ { "name":"AA", "children":[ ...

  2. jQuery treetable【表格多重折叠树功能及拖放表格子元素重新排列】

    今天有个表格需求做到多重折叠子元素功能,仔细想了下实现原理, 1.在html中,把父子节点的关系写在自定义属性,但对于节点是否有孩子(hasChild),是否是最后一个节点(isLastOne),是否 ...

  3. JQuery树插件——ztree

    API与Demo:http://www.treejs.cn/v3/api.php 使用插件,第一步依然是引入: <link rel="stylesheet" href=&qu ...

  4. 深入学习jQuery自定义插件

    原文地址:jQuery自定义插件学习 1.定义插件的方法 对象级别的插件扩展,即为jQuery类的实例增加方法, 调用:$(选择器).函数名(参数);      $(‘#id’).myPlugin(o ...

  5. [jQuery]jQuery DataTables插件自定义Ajax分页实现

    前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...

  6. 使用jQuery.form插件,实现完美的表单异步提交

    传送门:异步编程系列目录…… 时间真快,转眼一个月快结束了,一个月没写博客了!手开始生了,怎么开始呢…… 示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 月份的尾巴,今天的主 ...

  7. 为jQuery写插件

    很多场合,我们都会调用jQuery的插件去完成某个功能,比如slider. 如下图,做一个div,通过“$( "#slider" ).slider();”的方式直接将div变成sl ...

  8. bootstrap-简洁实用的jQuery手风琴插件

    前端 <html lang="zh"> <head> <meta charset="UTF-8"> <meta htt ...

  9. 推荐15款响应式的 jQuery Lightbox 插件

    利用现代 Web 技术,网络变得越来越轻巧与.模态框是突出展现内容的重要形式,能够让用户聚焦到重要的内容上去.在这个列表中,我们编制了15款响应式的 jQuery 灯箱库,这将有助于开发人员创建和设计 ...

随机推荐

  1. java为移动端写接口

    java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大呢.通常是让java作为一个app的服务端,为app客户 ...

  2. Javascript高级程序设计——Javascript简史+使用Javascript

    一.Javascipt简史 1.了解Javascript历史 Netscape(Javascript1.0).Microsoft(JScript)到JS1.1,再到ECMA-262标准 2.知道ECM ...

  3. Java Calendar.set 方法设置时间的问题

    因项目需要,需要遍历一年中的其中几个月,获得每个月的用户数量.  变量有:开始时间--startDate,结束时间--endDate. 逻辑很简单:获取到开始时间的月份和结束时间的月份,然后得到月份差 ...

  4. angular2入门,就这一篇就够了

    背景与概念: AngularJS2 是一款开源JavaScript库,由Google维护,用来协助单一页面应用程序运行. AngularJS2 是 Angular 1.x 的升级版本,性能上得到显著的 ...

  5. c#基础语句——分支语句的应用

    一.if...else... if是如果的意思,else是另外的意思,if后面跟(),括号内为判断条件,如果符合条件则进入if语句执行命令.如果不符合则不进入if语句.else后不用加条件,但是必须与 ...

  6. 2017.3.3自测j纠错题.

    解析:   在jUery中,他的背景颜色依次是红色,绿色,蓝色. 改变的是整个主体部分.<dody></body>. 单击. 2. 解析:  操作元素: html()  获取第 ...

  7. msil_accessibility_b03f5f7f11d50a3a_6.1.7600.16385_none_2232298e4f48d6ba

    dll名称 + +windows版本号 +补丁编号

  8. Java I/O之NIO概念理解

    JDK1.4的java.nio.*包引入了新的Java I/O新类库,其目的在于提高速度.实际上,旧的I/O包已经使用nio重新实现过,以便充分利用这种速度提高,因此即使我们不显式地用nio编码,也能 ...

  9. 【杂】poj2482 Stars in Your Windows 题面的翻译

    原地址:http://poj.org/problem?id=2482 神题,被誉为最浪漫的题目,一位acmer以自己独特的方式写下的殷殷情语 你窗前的星星 纵时光飞逝如梭,也我对你的回忆也永不黯然.从 ...

  10. 深入理解ajax系列第三篇——响应解码

    前面的话 我们接收到的响应主体类型可以是多种形式的,包括字符串String.ArrayBuffer对象.二进制Blob对象.JSON对象.javascirpt文件及表示XML文档的Document对象 ...