学习zTree笔记——按钮控制树的展开与合并

说明

公司使用了zTree插件生成树状数据,之前没有接触过,查资料发现zTree是一个依靠jQuery实现的多功能“树插件”,更多介绍详见:zTree简介,通过官方demo和网上资料进行学习,在这里记录下

正文

本例采用的是简单JSON数据作为节点,简单模式的JSON数据需要使用id/pid表示节点的父子包含关系,id表示该节点的唯一性,pid为该节点的父结点
ex:
var nodes = [
{id:1, pId:0, name: "父节点1"},
{id:11, pId:1, name: "子节点1"},
{id:12, pId:1, name: "子节点2"}
];

默认展开的节点,需要设置treeNode.open属性
无子节点的父结点,需要设置treeNode,isParent属性

本例通过参照网上的例子,实现按钮控制节点数的展开与合并,其中主要使用了expandAll(expandFlag)和expandNode (node, expandFlag, sonSign, focus, callbackFlag)方法
简单介绍这两个方法:
expandAll(expandFlag): 展开/折叠全部节点,通过zTree对象执行此方法
expandFlag是一个Boolean类型的参数,true表示展开全部节点,false表示折叠全部节点

expandNode (node, expandFlag, sonSign, focus, callbackFlag):展开/折叠指定的结点
node:必须是zTree内部的数据对象,此方法操作的节点
expendFlag:同上,true表示展开节点 false表示折叠节点
sonSign: 一个Boolean类型的参数,true表示全部子孙节点进行与expandFlag相同的操作, false表示只影响此节点,对于其子孙节点无任何影响
focus: 一个Boolean类型的参数,true表示展开/折叠操作后,通过设置焦点保证此焦点进入可视区域内 false表示展开/折叠操作后,不设置任何焦点,省略等同于true
callbackFlag:一个Boolean类型的参数,表示执行此方法时是否触发回调函数,省略等同于false

示例代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="./css/zTreeStyle/zTreeStyle.css">
<script type="text/javascript" src="./js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="./js/jquery.ztree.all.min.js"></script>
<script>
        var setting={
            check:{
                enable:true// 显示勾选框
            },
            view:{
                showIcon:false, //是否显示节点的图标
                showLine:true,  //显示之间的连线
                expandSpeed:"slow",//节点展开,折叠时的动画速度
                selectedMulti:false//不允许同时选中多个节点
            },
            data:{
                simpleData:{
                    enable:true,//使用简单数据模式
                    idKey:"id",//节点数据中保存唯一标识的属性名称
                    pIdKey:"pId",//节点数据中保存其父节点唯一标识的属性名称
                    rootPId:""//用于修正根节点父节点数据 默认值为null
                }

            },
            callback:{}
        };
        var nodes = [
            {id :"1",pId:"0",name :"山西省"},
            {id :"2",pId:"0",name : "河北省"},
            {id :"3",pId:"0",name : "内蒙省"},
            {id :"4",pId:"0",name : "吉林省"},
            {id :"11",pId:"1",name: "大同市"},
            {id :"12",pId:"1",name: "朔州市"},
            {id :"21",pId:"2",name: "石家庄"},
            {id :"22",pId:"2",name: "唐山市"},
            {id :"31",pId:"3",name: "赤峰市"},
            {id :"32",pId:"3",name: "呼市"},
            {id :"41",pId:"4",name: "长春市"},
            {id :"42",pId:"4",name: "四平市"},
            {id :"43",pId:"4",name: "辽源市"},
            {id :"111",pId:"11",name:"浑源县"},
            {id :"112",pId:"11",name: "阳高县"},
            {id :"121",pId:"12",name: "山阴县"},
            {id :"122",pId:"12",name: "应县"}
        ];

        $(document).ready(function(){
            $.fn.zTree.init($('#leftTree'), setting, nodes);
        })
        //展开树
        function expendTree(){
            var tree = $.fn.zTree.getZTreeObj("leftTree");
            tree.expandAll(true);
        }
        //合并树
        function closeTree(){
            debugger;
            var tree = $.fn.zTree.getZTreeObj("leftTree");
            /* tree.expandAll(false); */  // 该方法执行效果与下面循环判断执行方法效果相同
            var nodes = tree.transformToArray(tree.getNodes());
            for(var i = 0;i < nodes.length; i++){
                if(nodes[i].level == 0){// level属性 初始化节点数据时,有zTree增加此属性,请勿提前赋值
                    tree.expandNode(nodes[i], false, true, false);
                }else{
                    tree.expandNode(nodes[i], false, true, false);
                }

            }
        }
    </script>
</head>
<body>
    <ul id="leftTree" class="ztree"></ul>
    <button onclick="expendTree()">展开</button>
    <button onclick="closeTree()">合并</button>

</body>
</html>

执行结果

页面初始效果和点击合并按钮效果
这里写图片描述

点击展开效果
这里写图片描述

参考示例:https://blog.csdn.net/zhongshijun521/article/details/73131579

猜你喜欢

转载自blog.csdn.net/sinat_36553913/article/details/79737898