bootstrap-treeview 父子節點的全選與取消全選


// 選中父節點時,選中所有子節點
function getChildNodeIdArr(node) {
    var ts = [];
    if (node.nodes) {
        for (x in node.nodes) {
            ts.push(node.nodes[x].nodeId);
            if (node.nodes[x].nodes) {
                var getNodeDieDai = getChildNodeIdArr(node.nodes[x]);
                for (j in getNodeDieDai) {
                    ts.push(getNodeDieDai[j]);
                }
            }
        }
    } else {
        ts.push(node.nodeId);
    }
    return ts;
}

// 選中所有子節點時,選中父節點 取消子節點時取消父節點
function setParentNodeCheck(node) {
    var parentNode = $("#tree").treeview("getNode", node.parentId);
    if (parentNode.nodes) {
        var checkedCount = 0;
        for (x in parentNode.nodes) {
            if (parentNode.nodes[x].state.checked) {
                checkedCount++;
            } else {
                break;
            }
        }
        if (checkedCount == parentNode.nodes.length) {  //如果子節點全部被選 父全選
            $("#tree").treeview("checkNode", parentNode.nodeId);
            setParentNodeCheck(parentNode);
        } else {   //如果子節點未全部被選 父未全選
            $('#tree').treeview('uncheckNode', parentNode.nodeId);
            setParentNodeCheck(parentNode);
        }
    }
}

// 取消父節點時 取消所有子節點
function setChildNodeUncheck(node) {
    if (node.nodes) {
        var ts = [];    //當前節點子集中未被選中的集合 
        for (x in node.nodes) {
            if (!node.nodes[x].state.checked) {
                ts.push(node.nodes[x].nodeId);
            }
            if (node.nodes[x].nodes) {
                var getNodeDieDai = node.nodes[x];
                console.log(getNodeDieDai);
                for (j in getNodeDieDai) {
                    if (!getNodeDieDai.state.checked) {
                        ts.push(getNodeDieDai[j]);
                    }
                }
            }
        }
    }
    return ts;
}
function getTree() {
        $('#tree').treeview({
            data: res.ret_data,
            showIcon: false,
            showCheckbox: true,
            showBorder: false,
            onNodeChecked: function (event, node) { //選中節點 
                var selectNodes = getChildNodeIdArr(node); //獲取所有子節點      
                if (selectNodes) { //子節點不為空,則選中所有子節點       
                    $('#tree').treeview('checkNode', [selectNodes, { silent: true }]);
                }
                var parentNode = $("#tree").treeview("getNode", node.parentId);
                setParentNodeCheck(node);
            },
            onNodeUnchecked: function (event, node) { //取消選中節點  
                // 取消父節點 子節點取消
                var selectNodes = setChildNodeUncheck(node); //獲取未被選中的子節點 
                var childNodes = getChildNodeIdArr(node);    //獲取所有子節點 
                if (selectNodes && selectNodes.length == 0) { //有子節點且未被選中的子節點數目為0,則取消選中所有子節點   
                    console.log("反選");
                    $('#tree').treeview('uncheckNode', [childNodes, { silent: true }]);
                }
                // 取消節點 父節點取消
                var parentNode = $("#tree").treeview("getNode", node.parentId);  //獲取父節點
                var selectNodes = getChildNodeIdArr(node);
                setParentNodeCheck(node);
            }
        })
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM