zTree異步加載修改節點圖標方法

項目須要用到zTree插件,zTree就不作介紹了,下面兩個鏈接是是zTree的文檔和示例php

zTree文檔:http://www.treejs.cn/v3/api.phpnode

zTree示例:http://www.treejs.cn/v3/demo.php#_101api

 

zTree的基本用法經過看演示及文檔基本都能掌握異步

 

下面記錄下項目中特別的用法async

1.異步加載時修改圖標函數

    $('#rptIndTree').height($(window).height()-120);
    var setting = {
        check: {
            enable: true,
            chkStyle: "radio",
            radioType: "all"
//            chkboxType:{ "Y": "ps", "N": "ps" }
        },
        data: {
            key: {
                name: "NAME"
            },
            simpleData: {
                enable: true,
                idKey: "ID",
                pIdKey: "PID",
                rootPId: "0"
            }
        },
       async : {    
            enable : true,   
            type: 'get',
            url : url, // Ajax 獲取數據的 URL 地址    
            autoParam : [], 
            otherParam: []  
        },
        callback : {
            onAsyncSuccess: zTreeOnAsyncSuccess,
            onClick: zTreeOnClick,
            onCheck: zTreeOnCheck,
            beforeClick: zTreeBeforeClick,
            beforeCheck: zTreeBeforeCheck
        }
    };
    zTree = $.fn.zTree.init($("#rptIndTree"), setting, "");

上面是基本的加載zTree的代碼url

加載完後在加載成功的回調函數中處理樹節點的圖標zTreeOnAsyncSuccessspa

//加載完後執行
function zTreeOnAsyncSuccess(){
    var treeObj = $.fn.zTree.getZTreeObj("rptIndTree");
    var nodes = treeObj.getNodes();
    for (var i=0, l=nodes.length; i < l; i++) {
        if('undefined' != typeof(nodes[i].children)){
            nodes[i].iconOpen =  '../menu1_open.png';  //父菜單打開圖標
            nodes[i].iconClose =  '../menu1_close.png';  //父菜單關閉圖標
            treeObj.updateNode(nodes[i]);
            
            for (var k=0, _l=nodes[i].children.length; k < _l; k++) {
                nodes[i].children[k].icon = '../menu2_def.png';  //子菜單圖標
                treeObj.updateNode(nodes[i].children[k]);
            }
        }else{
            nodes[i].icon = '../menu2_def.png';  //沒有子菜單圖標
            treeObj.updateNode(nodes[i]);
        }
    }
}

遍歷每一個樹節點根據有無子節點來修改圖標,若是有子節點須要同時設置iconOpen和iconClose 屬性,不然改節點打開和關閉都是同一種樣式。插件

修改了節點的圖標屬性後,而後更新該節點用到如下方法:code

treeObj.updateNode(nodes[i])

 在zTree文檔中能夠查找到此方法。

相關文章
相關標籤/搜索