博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
支持IE6的树形节结构TreeTable
阅读量:6608 次
发布时间:2019-06-24

本文共 2897 字,大约阅读时间需要 9 分钟。

关于TreeTable实际应用的案例:http://www.cnblogs.com/qigege/p/5213689.html

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则中止展开. 默认值:
      function($treeTable, id) {       //$treeTable 当前树表的jquery对象.       //id 当前行的id            //返回false,则直接退出,不会激发后面的beforeExpand和子节点的展开       return true; }
    • beforeExpand: {展开子节点前触发的事件, 默认值:
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({}) 如:

引用的文件

  js代码
    <script type="text/javascript">
        $(
function(){
            var option = {
                theme:'vsStyle',
                expandLevel : 2,
                beforeExpand : function($treeTable, id) {
                    //判断id是否已经有了孩子节点,如果有了就不再加载,这样就可以起到缓存的作用
                    if ($('.' + id, $treeTable).length) { return; }
                    //这里的html可以是ajax请求
                    var html = '<tr id="8" pId="6"><td>5.1</td><td>可以是ajax请求来的内容</td></tr>'
                             + '<tr id="9" pId="6"><td>5.2</td><td>动态的内容</td></tr>';
                    $treeTable.addChilds(html);
                },
                onSelect : function($treeTable, id) {
                    window.console && console.log('onSelect:' + id);
                    
                }
            };
            $('#treeTable1').treeTable(option);
        });
    </script> 
html结构
            
<table id="treeTable1" style="width: 100%">
                <tr>
                    <td style="width: 200px;">
                        标题</td>
                    <td>
                        内容</td>
                </tr>
                <tr id="1">
                    <td>
                        <span controller="true">1</span></td>
                    <td>
                        内容</td>
                </tr>
                <tr id="2" pid="1">
                    <td>
                        <span controller="true">2</span></td>
                    <td>
                        内容</td>
                </tr>
                <tr id="3" pid="2">
                    <td>
                        3</td>
                    <td>
                        内容</td>
                </tr>
                <tr id="4" pid="2">
                    <td>
                        4</td>
                    <td>
                        内容</td>
                </tr>
                <tr id="5" pid="4">
                    <td>
                        4.1</td>
                    <td>
                        内容</td>
                </tr>
                <tr id="6" pid="1" haschild="true">
                    <td>
                        5</td>
                    <td>
                        注意这个节点是动态加载的</td>
                </tr>
                <tr id="7">
                    <td>
                        8</td>
                    <td>
                        内容</td>
                </tr>
            </table>
关于

作者: benzhan(詹潮江)

版本变更

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

1.1版本:(2011-05-08)

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

1.3版本:(2011-05-09)

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

1.4.2版本:(2011-09-03)

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

转载于:https://www.cnblogs.com/qigege/p/5213639.html

你可能感兴趣的文章
Android Arcface人脸识别sdk使用工具类
查看>>
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字......
查看>>
050:navie时间和aware时间详解
查看>>
百度地图车辆运动轨迹
查看>>
使用ReaderWriterLock类实现多用户读/单用户写同步
查看>>
springmvc + mybatis + ehcache + redis架构
查看>>
Python正则表达式初识(十)附正则表达式总结
查看>>
APICLOUD 1.1.0 开发环境搭建
查看>>
《Cadence 16.6电路设计与仿真从入门到精通》——导读
查看>>
Confluence 6 如何让我的小组成员知道那些内容是重要的
查看>>
找到一个适合的分布式文件系统之各种分布式文件系统优缺点对比
查看>>
httpd基本配置
查看>>
索引失效的几个原因
查看>>
关于多线程中使用while做循环而不使用if的解释
查看>>
js typoeof用法
查看>>
五险一金,你清楚吗?
查看>>
Ip核_fifo
查看>>
repquota命令--Linux命令应用大词典729个命令解读
查看>>
设置vs解决方案跟随右边cpp
查看>>
Linux Administration
查看>>