【JavaScript】JQuery-Ztree 演示demo

 

使用CDN引用JQuery和ZTree的资源

demo页的代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>JQuery-Ztree-Demo</title>
  <!-- ZTREE的渲染样式 -->
  <link href="https://cdn.bootcss.com/zTree.v3/3.5.40/css/zTreeStyle/zTreeStyle.css" rel="stylesheet">

  <!-- 先引用Jquery,再引用Ztree 使用LiveServer,不要静态访问 -->
  <!-- https://treejs.cn/v3/main.php#_zTreeInfo -->
  <script src="https://cdn.bootcss.com/jquery/1.4.1/jquery.js"></script>
  <script src="https://cdn.bootcss.com/zTree.v3/3.5.40/js/jquery.ztree.all.min.js"></script>
</head>
<body>
  <div>
    <button id="btn1">获取选中节点</button>
    <button id="btn2">全选/清空</button>
    <!-- class="ztree" 渲染ztree的样式 -->
    <div id="ztreeContainer" class="ztree"></div>
  </div>

  <script>

    $(function() {

      // ZTree的配置对象 详细文档见 https://treejs.cn/v3/api.php
      const SETTING = {
        // 1、配置数据格式
        data: {
          // 接收的数据格式分为两种,树data 和 列表data, enable: true表示按列表data
          simpleData: { 
            enable: true,
            // idKey 主键的key名称
            idKey: 'areacode',
            // pIdKey 父键的key名称
            pIdKey: 'areaparent',
            // 用于修正根节点父节点数据,即 pIdKey 指定的属性值
            rootPId: 0
          },

          key: {
            name: 'areaname' // 每个节点展示的label值的key名称 
          }
        },
        // 2、配置视图效果
        view: {
          // 支持双击展开子节点
          dblClickExpand: true,
          // 多选支持
          selectedMulti: true,
          //设置是否显示节点图标 (文件icon)
          showIcon: true, 
          //设置是否显示节点与节点之间的连线
          showLine: true, 
        },
        // 3、配置复选的操作
        check: {
          // 支持复选
          enable: true,
          // Y: 勾选时的配置 N: 取消勾选时的配置
          // p:联动影响父节点 s:联动影响子节点
          // chkboxType: { 'Y': 'ps', 'N': 'ps' }
          
          // 设置为只获取选中的节点,不需要勾选父节点和子节点
          chkboxType: { 'Y': '', 'N': '' },
          // 复选框样式 默认checkbox
          // chkStyle: 'checkbox'
        },
        
      }

      // 回调方法配置对象
      const callBackObj = {
        // 点击事件
        onClick: function(event, treeId, treeNode) {
          // 获取当前点击的节点对象
          const currentNode = treeNode
          console.log('当前选择节点', JSON.stringify(currentNode))
        }
      }
      // 4、配置回调的钩子函数对象
      // callBack: callBackObj
      SETTING.callBack = callBackObj

      // 读取数据,渲染Ztree 需要开启LiveServer,否则跨域限制
      $.getJSON("./data.json", function (data){
        console.log(data)

        // 初始化渲染ZTREE组件
        const zTreeObj = $.fn.zTree.init($('#ztreeContainer'), SETTING, data.data)

      })

      // 获取选中节点
      $('#btn1').click(function(event) {
        // console.log(event)
        
        // 1、获取ZTree的对象
        const ZTREE_OBJECT = $.fn.zTree.getZTreeObj('ztreeContainer')

        // 2、调用获取节点API,选择checked为true值的节点
        const nodeList = ZTREE_OBJECT.getCheckedNodes(true)
        console.log(nodeList)
      })
      
      // 全选/清空 操作
      var flag = true
      $('#btn2').click(function(event) {
        // 1、获取ZTree的对象
        const ZTREE_OBJECT = $.fn.zTree.getZTreeObj('ztreeContainer')
        // 2、调用checkAllNodes
        ZTREE_OBJECT.checkAllNodes(flag)
        // 3、置反变量
        flag = !flag
      })
    })

    // 注,回显数据时,只要checked属性为true即可,也可以自定义属性名称,在data属性中配置
  </script>
</body>
</html>

  

data.json的json数据:

{
    "code":200,
    "data":[
        {
            "areacode":1,
            "areaid":1,
            "arealevel":"0",
            "areaname":"层级1 - A",
            "areaparent":0,
            "checked":false,
            "isenabled":"1"
        },
        {
            "areacode":2,
            "areaid":2,
            "arealevel":"0",
            "areaname":"层级1 - B",
            "areaparent":0,
            "checked":false,
            "isenabled":"1"
        },
        {
            "areacode":3,
            "areaid":3,
            "arealevel":"0",
            "areaname":"层级1 - C",
            "areaparent":0,
            "checked":false,
            "isenabled":"1"
        },
    {
            "areacode":11,
            "areaid":11,
            "arealevel":"0",
            "areaname":"层级2 - A1",
            "areaparent":1,
            "checked":false,
            "isenabled":"1"
        },
    {
            "areacode":12,
            "areaid":12,
            "arealevel":"0",
            "areaname":"层级2 - A2",
            "areaparent":1,
            "checked":false,
            "isenabled":"1"
        },
    {
            "areacode":13,
            "areaid":13,
            "arealevel":"0",
            "areaname":"层级2 - A3",
            "areaparent":1,
            "checked":false,
            "isenabled":"1"
        },
    
    {
      "areacode":21,
      "areaid":21,
      "arealevel":"0",
      "areaname":"层级2 - B1",
      "areaparent":2,
      "checked":false,
      "isenabled":"1"
    },
    {
      "areacode":22,
      "areaid":22,
      "arealevel":"0",
      "areaname":"层级2 - B2",
      "areaparent":2,
      "checked":false,
      "isenabled":"2"
    },
    {
      "areacode":23,
      "areaid":23,
      "arealevel":"0",
      "areaname":"层级2 - B3",
      "areaparent":2,
      "checked":false,
      "isenabled":"1"
    },
    
    {
      "areacode":31,
      "areaid":31,
      "arealevel":"0",
      "areaname":"层级2 - C1",
      "areaparent":3,
      "checked":false,
      "isenabled":"1"
    },
    {
      "areacode":32,
      "areaid":32,
      "arealevel":"0",
      "areaname":"层级2 - C2",
      "areaparent":3,
      "checked":false,
      "isenabled":"2"
    },
    {
      "areacode":33,
      "areaid":33,
      "arealevel":"0",
      "areaname":"层级2 - C3",
      "areaparent":3,
      "checked":false,
      "isenabled":"1"
    }
    ],
    "message":"操作成功!",
    "status":"success"
}

 

预览效果:

 

posted @ 2022-08-10 14:37  emdzz  阅读(182)  评论(0编辑  收藏  举报