0

0

实例详解zTree jQuery 树插件的使用

小云云

小云云

发布时间:2017-12-27 10:41:57

|

3125人浏览过

|

来源于php中文网

原创

项目需要树状视图形式展示后台返回的数据;并实现点击节点将节点信息添加到右侧的ul中;待后续提交获取使用;选择了能够实现异步加载节点信息的ztree插件,事实也证明这个插件足够强大,能够满足几乎所有需求;刚接触时看了很多人的分享,结合官方api文档,终于实现了功能,现将我学习的总结也分享出去.效果介绍;除了ztree默认的效果;使用api增加了一些实用的操作;包括手风琴效果;点击父节点展开效果;点击节点文字关联复选框效果;一级子节点数量展示效果.本文就为大家带来一篇ztree jquery 树插件的使用(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。

外部引入资源



html部分代码

    • 已选择

    css代码

    ul,li,body{
        margin: 0;
        padding: 0;
      }
      .ztree li span.node_name {
        font-size: 16px;
      }
      .box{
        width: 500px;
        margin:10px auto;
        border:3px solid #ccc;
        padding: 20px;
        border-bottom: none;
      }
      #treeDemo{
        width: 200px;
        display: inline-block;
        background-color: #f1f1f1;
        min-height: 200px;
      }
      #ulright{
        width: 200px;
        margin-left: 50px;
        min-height: 200px;
        border:1px solid #ccc;
        display: inline-block;
        vertical-align: top;
        background-color: #eeeee8;
      }
      #ulright li{
        width: 100%;
        height: 30px;
        list-style: none;
        line-height: 30px;
        margin-bottom: 3px;
        background-color: #00b6ba;
        padding-left: 10px;
        box-sizing: border-box;
    
      }
    
    
      /**/
      .ztree li a.curSelectedNode{
        background-color: transparent;
        border:#00b6ba;
      }
      .ztree li span.node_name{
        font-size: 18px;
        line-height: 18px;
        color: #000;
      }
      .ztree li a{
        padding: 5px;
        vertical-align: middle;
      }
      .ztree li a:hover{
        text-decoration: none;
      }
      .ztree li span.button.chk{
        margin: 9px 3px;
      }

    js代码

    //递归找到所有节点(非父节点)
    function getAllChildrenNodes(treeNode,result){
       if (treeNode.isParent) {
        var childrenNodes = treeNode.children;
        if (childrenNodes) {
          for (var i = 0; i < childrenNodes.length; i++) {
            if(!childrenNodes[i].children){
              result.push(childrenNodes[i].name);
            }
            result = getAllChildrenNodes(childrenNodes[i], result);
          }
        }
      }
      return result;
    }
    var parames = 3;
    //zTree的所有配置
    var setting = {
      //zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。
      treeId:"",
      //zTree 容器的 jQuery 对象,主要功能:便于操作,内部参数,不可修改
      treeObj:null,
      //异步请求数据配置;当父节点没有子节点时;点击此父节点会触发请求
      async:{
        //打开此功能
        enable: true,
        url:"./zTreeDemoV9.0SimpleFromV10.0.php",
        type:"post",
        //发送的父级id的字段定义;如修改,遵循格式autoParam: ["id=parentId"]
        autoParam: ["id"],
        //其他需要提交的参数["name","topic","key","ss"]转换后格式为name=topic&key=ss
        otherParam:["json",parames || 1,"test","2"],
        dataType:"json",
        contentType: "application/x-www-form-urlencoded",
        //ajax请求后的数据预处理函数
        dataFilter: function(treeId,parentNode,responseData){
          for(var i=0;i("+count+")");
        },
        //父节点展开时的事件
        onExpand: function(event, treeId, treeNode){
          //zTree对象
          var zTree = $.fn.zTree.getZTreeObj("treeDemo");
          //获取点击的id
          var nowId = treeNode.id;
          //获取所有节点
          var allNodes = zTree.getNodes();
          //获取点击节点的层级
          var level = treeNode.level;
          //定义过滤函数;获取节点层级与点击节点层级相同并且为父节点的节点
          function filter(node) {
            return (node.level == treeNode.level && node.isParent);
          }
          //获得点击节点同级的父节点的集合
          var sameLevelNodes = zTree.getNodesByFilter(filter);
          //遍历同级节点集合
          for(var i=0;i");
              addLi.find("span").text(treeNode.name);
              addLi.animate({
                width:"100%",
                height:"30"
              },400)
              addLi.appendTo($("#ulright"));
              //如果点击的节点存在connect字段;判断复选框状态加入到右侧ul或删除
              if(treeNode.connect){
                //遍历右侧li,如果选中的已经存在;return
                for(var i=0;i");
                  addLi.find("span").text(treeNode.connect);
                  addLi.animate({
                    width:"100%",
                    height:"30"
                  },400)
                addLi.appendTo($("#ulright"));
              }
              //将被勾选的节点背景颜色更改
              $("#treeDemo").find("a[title="+treeNode.name+"]").css("backgroundColor","#00b6ba");
            //非选中状态,删除
            }else{
              //将右侧的次节点对应的li删除
              $("#ulright").find("li[title="+treeNode.name+"]").animate({
                width:"0%",
                height:"0"
              },400,function(){
                $("#ulright").find("li[title="+treeNode.name+"]").remove();
              })
              //取消此节点的背景颜色
              $("#treeDemo").find("a[title="+treeNode.name+"]").css("backgroundColor","");
            }
          //选中的是父节点;获取所有子节点(非父节点),判断复选框状态加入到右侧ul或删除
          }else{
            //调用递归函数;获取所有非父级子节点数组集合
            var addNodesArray = getAllChildrenNodes(treeNode,[]);
            //是选中状态,加入到右侧ul
            if(treeNode.checked){
              //定义存储右侧li的数组
              var rightLiArray = [];
              $("#ulright li").each(function(i,v){
                rightLiArray.push($(v).attr("title"))
              })
              rightLiArray = rightLiArray.slice(1);
              //遍历勾选的数组集合
              for(var i=0;i"+addNodesArray[i]+"");
                  addLi.animate({
                    width:"100%",
                    height:30
                  },400)
                  addLi.appendTo($("#ulright"));
                }
                //将节点背景颜色修改
                $("#treeDemo").find("a[title="+addNodesArray[i]+"]").css("backgroundColor","#00b6ba");
              }
            //是非选中状态,删除
            }else{
              //遍历节点,执行删除操作
              for(var i=0;i

    后台php代码;本人纯前端,后台代码只会简单的写写;

    js代码大部分都有注释;详细api可在zTree官网查看 进入官方api文档 代码运行需在服务器环境下运行;

    最终栗子效果图

    aspx1财付通支付接口源码
    aspx1财付通支付接口源码

    本支付接口的特点,主要是用xml文件来记录订单详情和支付详情。代码比较简单,只要将里面的商户号、商户key换成你自己的,将回调url换成你的网站,就可以使用了。通过这个实例也可以很好的了解一般在线支付接口的基本工作原理。其中的pay.config文件记录的是支付详情,order.config是订单详情

    下载

    相关推荐:

    实例详解jQuery 利用ztree实现树形表格

    jquery之ztree实现右键收藏功能

    jQuery中zTree树插件使用分享

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    Python 序列化
    Python 序列化

    本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

    0

    2026.02.02

    AO3官网入口与中文阅读设置 AO3网页版使用与访问
    AO3官网入口与中文阅读设置 AO3网页版使用与访问

    本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

    91

    2026.02.02

    主流快递单号查询入口 实时物流进度一站式追踪专题
    主流快递单号查询入口 实时物流进度一站式追踪专题

    本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

    27

    2026.02.02

    Golang WebAssembly(WASM)开发入门
    Golang WebAssembly(WASM)开发入门

    本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

    11

    2026.02.02

    PHP Swoole 高性能服务开发
    PHP Swoole 高性能服务开发

    本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

    5

    2026.02.02

    Java JNI 与本地代码交互实战
    Java JNI 与本地代码交互实战

    本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

    5

    2026.02.02

    go语言 注释编码
    go语言 注释编码

    本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

    62

    2026.01.31

    go语言 math包
    go语言 math包

    本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

    55

    2026.01.31

    go语言输入函数
    go语言输入函数

    本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

    27

    2026.01.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    jQuery 教程
    jQuery 教程

    共42课时 | 5.3万人学习

    HTML+CSS基础与实战
    HTML+CSS基础与实战

    共132课时 | 10.1万人学习

    tp6+adminlte搭建通用后台
    tp6+adminlte搭建通用后台

    共39课时 | 5.8万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号