jQuery 樹插件-zTree 全選 反選 折疊和展開,實現(xiàn)聯(lián)動

1:點擊全選可選中或取消選中全部節(jié)點,全部展開可展開或折疊所有節(jié)點

2:單個節(jié)點的選中或折疊等操作會影響全選和展開按鈕狀態(tài)

image

image.png

image.png

源碼:

setting = {
...
callback: {
    onCheck: zTreeOnCheck,
    onExpand: zTreeOnExpand,
    onCollapse: zTreeOnCollapse
}
...
}
$.fn.zTree.init($("#tree"), setting, treeNodes); 

var open = fold = true;
function zTreeOnExpand(event, treeId, treeNode) {
    var zTree = $.fn.zTree.getZTreeObj("tree");
    var nodes = zTree.getNodes();
    //所有節(jié)點都是展開狀態(tài)
    open = isOpen(nodes,0);
    //有節(jié)點折疊
    if(open){
        $('#fold span').text('全部折疊');
        $('#fold img').attr('src','../../../image/fold.png');
        fold = true
    }
}
function zTreeOnCollapse(event, treeId, treeNode) {
    //所有節(jié)點都是折疊狀態(tài)
    var zTree = $.fn.zTree.getZTreeObj("tree");
    var nodes = zTree.getNodes();
    var val = isOpen(nodes,1);
    //有節(jié)點折疊
    if(!val){
        $('#fold span').text('全部展開');
        $('#fold img').attr('src','../../../image/open.png');
        fold = false
    }
    open = true;
}
function isOpen (nodes, type){
    for (var i = 0; i < nodes.length; i++){
        if(type){//折疊操作
            //只要有一個節(jié)點為折疊狀態(tài),返回false
            if(open){
                if(nodes[i].children != undefined){
                    open = nodes[i].open;
                    if(!open){
                        return open
                    }else{
                        isOpen(nodes[i].children)//遍歷直節(jié)點
                    }
                }
            }else{
                return open
            }
        }else{
            if(open){
                return open
            }else{
                if(nodes[i].children != undefined){
                    open = nodes[i].open;
                    if(open){
                        return open
                    }else{
                        isOpen(nodes[i].children)
                    }
                }
            }
        }
    }
}
function zTreeOnCheck(event, treeId, treeNode) {
    var zTree = $.fn.zTree.getZTreeObj("tree");
    var node = zTree.getNodes();
    var nodes = zTree.transformToArray(node).length;
    var checkNode = zTree.getCheckedNodes().length;
    if(nodes == checkNode){
        $('#all').prop('checked', true)
    }else{
        $('#all').prop('checked', false)
    }
}
$('#all').on('click',function (e) {
    var zTree = $.fn.zTree.getZTreeObj("tree");
    var node = zTree.getNodes();
    var nodes = zTree.transformToArray(node);
    var checkNode = zTree.getCheckedNodes().length;
    //已選中的節(jié)點數(shù)小于總數(shù) - 全選
    if (checkNode < nodes.length) {
        $('#all').prop('checked', true)
        zTree.checkAllNodes(true);
    } else{
        zTree.checkAllNodes(false);
    }
})
$('#fold').on('click',function (e) {
    var zTree = $.fn.zTree.getZTreeObj("tree");
    if (fold) {
        $('#fold span').text('全部展開');
        $('#fold img').attr('src','../../../image/open.png');
        zTree.expandAll(false);
        fold = false
    } else{
        $('#fold span').text('全部折疊');
        $('#fold img').attr('src','../../../image/fold.png');
        zTree.expandAll(true);
        fold = true
    }
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 拉薩,一座一年四季也不會因為時節(jié)的變化而失去溫暖的城市!在這里,每一縷金色的陽光都能照亮夢想與現(xiàn)實;在這里,奔走于...
    四月陽光呀閱讀 736評論 0 1
  • 桃花 ——近觀似美人晨妝 嬌嗔細(xì)語 風(fēng)過處輕撩裙紗 曼歌妙舞 抬眉間已是驚鴻四起 ——最愛的是白雪襯著桃花,若瑩光...
    方小兮閱讀 347評論 0 1
  • 12.17 體重69.3 早 一碗湯藥 一碗雜糧粥 一根香蕉 一個咸鴨蛋 中一碗雜糧粥 一個煎蛋 兩個橘子 若干海...
    白胖胖的天晴閱讀 200評論 0 0
  • 怙惡不悛 捯飭完,老頭兒穿上了過年的新衣裳,看看時間還不到,便躺在床上熬,他熬啊熬,熬啊熬,一不小心給睡著,當(dāng)他睜...
    于狐閱讀 461評論 0 0

友情鏈接更多精彩內(nèi)容