zoukankan      html  css  js  c++  java
  • 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);
                }
            })
    }
    

      

  • 相关阅读:
    深入解析Mysql中事务的四大隔离级别及其所解决的读现象
    MySQL的B+Tree索引
    数据库中的乐观锁与悲观锁
    github 页面及功能介绍(转载)- 很建议看看
    python 修改文件的创建时间、修改时间、访问时间
    Go-常识补充-切片-map(类似字典)-字符串-指针-结构体
    Django-djangorestframework-渲染模块
    Django-djangorestframework-请求模块-获取请求参数
    Go-函数高级使用-条件分支-包管理-for循环-switch语句-数组及切片-与或非逻辑符
    Go-环境搭建-hello world-变量常量定义-函数使用基础
  • 原文地址:https://www.cnblogs.com/grow-up-up/p/12835797.html
Copyright © 2011-2022 走看看