动态treeTable jquery插件使用

先把 jQuery treetable 的官方API地址贴上: http://ludo.cubicphuse.nl/jquery-treetable/

有用到这个插件的可以去看看,但是它提供的treetable是一个静态的,增加,删除,修改等操作都是直接对DOM对象进行操

作,如果这个treeTable很大,静态的显然就不能满足这个需求了.所以我把它做成了动态的,父子关系,节点内容都存在了数

据库.我用json进行前后台数据传递,具体格式如下:

[
    {
        "dId": "2",
        "pId": "1",
        "content":"这是第一行的内容"
    },
    {
        "dId": "3",
        "pId": "2",
        "content":"这是第二行的内容"
        
    },
    {
        "dId": "4",
        "pId": "3",
        "content":"这是第三行的内容"
    },
    {
        "dId": "5",
        "pId": "1",
        "content":"这是第二行的内容"
        
    }
]

实现的代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" http-equiv="Content-type" name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no, width=device-width">
    <title>测试tabletree</title>
    <script src="../js/jquery-1.11.1.js"></script>
    <script src="../js/common.js"></script>
</head>
<body>
    <table id="table">
     <tr data-tt-id="1">
   <!-- <td><input type="checkbox" value="0" οnclick="checkFuck(1)"/>Parent</td><td></td> -->
   <td>Parent</td><td></td>
 </tr>
</table>
    <script>
    var dataLength=0;
    $(document).ready(function(){
    $.get("data/nodeId.json",function(data){
    var html;
    dataLength=data.length;
    for(var i=0;i<data.length;i++){
    var a=data[i].dId;
    var b=data[i].pId;
    var content=data[i].content;
</tr>';
    html +='<tr data-tt-id='+a+' data-tt-parent-id='+b+'><td>' + content + '</td></tr>';
    }
    $('#table').append(html);
    loadResource();
    });
    });
    //这里需要特别注意一下,因为这个table的每一个tr是动态append上去的,当你append完了之后css和jqueryUI已经加载完了,所以不会对这些动态拼上去的tr进行渲      染,这里要让css和jqueryUI在append之后在加载,浏览器一边发了http请求去请求css和js一边继续解析js代码,所以这时候马上使用js文件中的方法就会报错,所以      要将后续方法的调用放在文件加载完毕.
    function loadResource(){
    loadjscssfile("../css/jquery.treetable.css","css");
    loadjscssfile("../css/jquery.treetable.theme.default.css","css");
    loadjscssfile("../js/jquery.treetable.js","js");
    loadjscssfile("../js/jquery-ui.js","js");
    }

function test(){
var dataId=nodeId.attr("data-tt-id");
console.log(dataId);
console.log(nodeId);
}
</script>
</body>
</html>


common.js的里面代码如下:

// JavaScript Document
var i=0;
function loadjscssfile(filename,filetype){


    if(filetype == "js"){
        var fileref = document.createElement('script');
        fileref.setAttribute("type","text/javascript");
        fileref.setAttribute("src",filename);
    }else if(filetype == "css"){
        var fileref = document.createElement('link');
        fileref.setAttribute("rel","stylesheet");
        fileref.setAttribute("type","text/css");
        fileref.setAttribute("href",filename);
    }
   if(typeof fileref != "undefined"){
        document.getElementsByTagName("head")[0].appendChild(fileref);
        fileref.οnlοad=fileref.onreadystatechange=function(){  
  if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){  
  i++;
//这里标志着css文件和js文件加载完毕了
  if(i==dataLength){
    $("#table").treetable({ expandable: true });
    $("#table tbody").on("mousedown", "tr", function() {
$(".selected").not(this).removeClass("selected");
$(this).toggleClass("selected");
});
  }
}  
fileref.οnlοad=fileref.onreadystatechange=null;
};
   }
}


最后就是上图的效果,每个节点和节点的内容都是动态的,对整个treeTable的操作也就变成了对后台数据的操作.

我想把jquery TreeTable用到的css和js文件上传上来,但是没有找到在哪里上传,想要就去文章开头的官方API自己下

载,如果你有更好的方法欢迎交流讨论.
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值