ztree之获取当前节点的所有子节点

在使用zTree插件实现树形图中,如果需要获取当前点击的父节点的子节点数的需求,可以使用treeNode.children获取子节点数据集合,使用length方法获取集合长度。
将当前节点的treeNode传入即可调用。
在我这有两种方式:

  //ztree节点树点击事件
        function zTreeOnClick(event, treeId, treeNode) {

                var strID = "";//定义变量接收节点

                //接收返回的节点
                strID = getzTreeChildrenNode(treeNode, strID);

                //节点拼接
                strID = strID + "," + treeNode.id;
                //console.log(str);

                //去除拼接节点的第一个“,”号
                var NodesID = strID.substring(1, strID.length);
                console.log(NodesID)

                //将拼接号的节点赋值用于查询
                $("#CustomerTypeID").val(NodesID);
             

                Classification();//路径导航
            
           
        }
        //递归查询当前节点下面的全部子节点(一)
        function getzTreeChildrenNode(treeNode, result)
        {
            //检测是否为父节点
            if (treeNode.isParent) {
                var childrenNodes = treeNode.children;//查询子节点
                if (childrenNodes) {
                    //子节点拼接
                    for (var i = 0 ; i<childrenNodes.length ; i++){
                       result += ',' + childrenNodes[i].id;
                       result = getzTreeChildrenNode(childrenNodes[i], result);//循环调用
                    }
                }
            }
            return result;//返回
        }

        //递归查询当前节点下面的全部子节点(二)
        var nodeId = "";//记录节点
        function findAllNodes(nodeObj) {
            var nodeArr = nodeObj.children; //没有子节点==undefined
            if (nodeId == "") {
                nodeId = nodeObj.id;
            }
            if (nodeArr != undefined) {
                for (var i = 0; i < nodeArr.length; i++) {
                    nodeId += "," + nodeArr[i].id;
                    if (nodeArr[i].children != undefined) {
                        findAllNodes(nodeArr[i]);//循环调用
                    }
                }
            }
            //console.log(nodeId);
            return nodeId;            
        }

我起初使用的是方法二,但是方法二在我的电脑上使用时发生了错误,只有第一次,获取的是正确外,下一次获取的ID就会重复出现或者ID不进行重新获取,因此改用了方法。
方法二在朋友的电脑上使用是可以的,但在我的电脑却发生了错误。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值