一位数组返回id和pid通过这两个参数转换为树形结构数据,和树形结构的渲染

2023-11-19

废话不多说直接上代码


html代码我是引用了一个jq的插件作为样式插件名字为 jOrgChart 具体内容大家可以评论到下方
<div class="com">
    <div class="TheEditor">编辑</div>
    <div id='jOrgChart'></div>
</div>
js代码大家把url地址改成你们本地的假数据渲染,
$.ajax({
    url: url,
    success:function (data) {
        //将一位数组改变成树状结构图
        function treeObj(originObj){
            //对象深拷贝
            var obj ={};
            for (key in originObj){
                var val = originObj[key];
                obj[key] = typeof val === 'object' ? arguments.callee(val):val;
            }
            //对象新增children键值,用于存放子树
            obj['children'] = [];
            return obj;
        }
        //data:带转换成树形结构的对象数组
        //attributes:对象属性
        function toTreeData (data, attributes) {
            var resData = data;
            var tree = [];
            //找寻根节点
            for (var i = 0; i < resData.length; i++) {
                if (resData[i][attributes.pid] === ''|| resData[i][attributes.pid] === null) {
                    tree.push( treeObj(resData[i]) );
                    resData.splice(i, 1);
                    i--;
                }
            }
            run(tree);
            //找寻子树
            function run(chiArr) {
                if (resData.length !== 0) {
                    for (var i = 0; i < chiArr.length; i++) {
                        for (var j = 0; j < resData.length; j++) {
                            if (chiArr[i][attributes.id] === resData[j][attributes.pid]){
                                var obj = treeObj(resData[j]);
                                chiArr[i].children.push(obj);
                                resData.splice(j, 1);
                                j--;
                            }
                        }
                        run(chiArr[i].children);
                    }
                }
            }
            return tree;
        }
        var  data = data.data;
        // 属性配置信息
        var attributes = {
            id: 'id',
            pid: 'pid',
        };
        var treeData = toTreeData(data, attributes);alert( treeData )
      //点击菜单渲染树形菜单
        var showlist = $("<ul id='org' style='display:none'></ul>");
        showall(treeData,showlist);
        $("#jOrgChart"). append(showlist);
        $("#org").jOrgChart( {
            chartElement : '#jOrgChart',//指定在某个dom生成jorgchart
            dragAndDrop : true //设置是否可拖动
            //chartClass [默认= 'jOrgChart']-分配给生成的标记的样式类的名称。
            //chartElement - 用于指定您想要附加OrgChart标记的HTML元素。[默认= '主体']
        });

        //循环递归显示数据数据
        function showall(menu_list,parent) {
            //循环人员列表
            $.each(menu_list, function(index,val) {
                if(val.children.length > 0){
                    var li = $("<li></li>");
                    var li_two = $("<li></li>");
                    li.append(
                        "<a  class='hiw' οnclick='add_click(this)'id="+val.id+">" +
                            "<img class='img_hide'  src="+ val.img +" >"+
                            "<p title="+ val.name +" pid="+ val.pid +">"+ val.name +"</p>"+
                            "<div class='je_jia' οnclick='jiw(this,event)'>-</div>"+
                        "</a>"
                    ).append("<ul></ul>").appendTo(parent);
                    //递归显示
                    showall( val.children, $(li).children().eq(1) );
                }else{
                    $("<li></li>").append("<a  class='hiw' οnclick='add_click(this)'id="+val.id+">" +
                            "<img class='img_hide'  src="+ val.img +" >"+
                            "<p title="+ val.name +" pid="+ val.pid +">"+ val.name +"</p>"+
                            "<div class='je_jia' style='display: none;' οnclick='jiw(this,event)'>-</div>"+

                     "</a>").appendTo(parent);
                }
            });
        };
    }
})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一位数组返回id和pid通过这两个参数转换为树形结构数据,和树形结构的渲染 的相关文章

  • 【C++】通过栈/队列/优先级队列/反向迭代器了解适配器及仿函数

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 stack 实现一个stack 二 queue 实现一
  • C/C++尾插法建立单链表

    思路 一个s指针指向新建节点 一个节点指向尾节点 C 中有引用 写出来很简单 下面给出的是天勤数据结构高分笔记上面的写法 疯狂吐槽这种C和C 混用的方法 include
  • StoreUpgrader$UnexpectedUpgradingStoreVersionException: Not possible to upgrade a store with version

    Caused by org neo4j kernel impl storemigration StoreUpgrader UnexpectedUpgradingStoreVersionException Not possible to up
  • 【IT】计算机体系结构

    https edu 51cto com center course user get study course 解释型语言 在计算机资源受限制的嵌入式计算机上 单片机等 效果不好 因此在嵌入式开发中 更多的还是使用c c 这种 解释型语言
  • 过河卒 蓝桥杯 755

    题目描述 如图 A 点有一个过河卒 需要走到目标 B 点 卒行走规则 可以向下 或者向右 同时在棋盘上的 C 点有一个对方的马 该马所在的点和所有跳跃一步可达的点称为对方马的控制点 例如上图 C 点上的马可以控制 99 个点 图中的 P1
  • java实现rabbitmq消息队列

    1 rabbitmq常用的五种模型 基本消息模型 基本消息模型就是 一个生产者丶默认交换机丶一个队列丶一个消费者 work消息模型 work消息模型就是 一个生产者丶默认交换机丶一个队列丶多个消费者 fanout广播模式 发布 订阅模式 f
  • Powershell无法使用conda activate的问题

    主要引起的原因是Powershell使用Conda init失败 问题主要出现在中文系统中 特别与onedrive开启了 文档同步 有关 可以看到 最后两行生成了配置文件 用以启动conda 并在onedrive上 但是 onedrive中
  • 搭建prometheus+grafana监控系统

    prometheus简介 Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 自2012年成立以来 许多公司和组织都采用了Prometheus 该项目拥有非常活跃的开发人员和用户社区 现在 它是一个独立的开源项
  • 计算机相关专业结业课题推荐及答辩技巧,加关喔!

    计算机相关专业结业课题推荐及答辩技巧 是不是还在为选题而烦恼 本文是提供一些计算机 软件 通信 电子等 相关专业大四选题推荐及一些答辩技巧 供给大家学习和参考 预祝各位看官学业进步 前程似锦 创作不易 帮忙点赞 收藏 好评哦 一 整个学年设
  • @JsonProperty注解解析

    1 概述 来源 JsonPrpperty是jackson包下的一个注解 详细路径 com fasterxml jackson annotation JsonProperty 作用 JsonProperty用在属性上 将属性名称序列化为另一个
  • 华为OD机试真题- 统计匹配的二元组个数【2023Q2】【JAVA、Python、C++】

    题目描述 给定两个数组A和B 若数组A的某个元素A i 与数组B中的某个元素B j 满足 A i B j 则寻找到一个值匹配的二元组 i j 请统计在这两个数组A和B中 一共存在多少个这样的二元组 输入描述 第一行输入数组A的长度M 第二行
  • 深度学习--Pytorch构建栈式自编码器实现以图搜图任务(以cifar10数据集为例)

    Pytorch构建栈式自编码器实现以图搜图任务 搞清楚pytorch与tensorflow区别 pytorch tensorflow 搞清楚栈式自编码器的内部原理 效果图 代码及效果图 欠完备编码器 卷积栈式编码器 栈式编码器 本文旨在使用
  • ssm项目tomcat正常启动,首页不能访问的问题分析

    遇到这种情况的我们可以从以下几方面进行问题的排查 1 首先出现这种问题一般都是springmvc xml不能正常读取 也就是说文件路径不正确 是否打了war包 lib包是否存在 web xml路径是否正确
  • 动态渲染 echarts 饼图(vue 2 + axios + Springboot)

    目录 前言 1 项目搭建 1 1 前端 1 2 后端 2 后端数据渲染前端 2 1 补充1 在 vue 中使用 axios 2 2 补充2 Springboot 处理跨域问题 2 3 修改前端代码 2 3 1 修改饼图样式 2 3 2 调用
  • Fast-ReID 训练自己的数据集调优记录(一)

    Fast ReID前期准备 文章目录 Fast ReID前期准备 前言 一 Fast ReID 介绍 Fast ReID 特点 FastReID 架构 二 Fast ReID 复现 前言 FastReID 是一个 SOTA 级的 ReID
  • Linux开放普通用户使用winscp上传文件和禁止root用户登录

    鉴于使用root用户操作系统有诸多风险 也给网络黑客暴力破解服务器密码可乘之机 于是决定禁用root用户远程登录系统 可是禁用root用户登录系统也带来一个问题 那就是root用户登录不了WinScp 也就没办法上传文件了 这还了得 这会给
  • qt中加载qss样式不生效的问题

    前提是你能正确加载 而且 你试着将你的qss后缀改成css 发现能生效 但是后缀改成qss没有生效 这个原因就是字符编码的问题了 需要改成utf 8才行 使用notepade 来改是一种方式 参考博客 QT 避坑指南 QSS文件引入及解决自
  • Allegro使用总结-查看Layout基本操作:

    好久没用CSDN写过笔记了 没想到无意间打开 编辑器更新啦 以前巨难用的 富文本编辑器 终于改观了 变的好像语雀 1 视图 画面操作 a 画面缩放 Zoom F11 F12 或 鼠标滚轮 补充 Zoom分辨率调节 Setup user pr
  • Unity2019_寻路系统

    简单导航寻路功能 选定为静态网格导航 Windows gt Ai gt Navigation 点击烘焙 角色上挂一个导航网格组件 挂上脚本 鼠标点击位置设置为导航的终点 using UnityEngine using UnityEngine
  • admin-lte+ng-bootstrap组合开发之modal弹层不显示

    在用admin lte做前端页面框架做开发 需要用到弹出层效果时 看到ng bootstrap中有Modal实现弹层效果 步骤如下 1 安装和配置ng bootstrap 具体见 https www jianshu com p 690080

随机推荐

  • Qt

    Qt UDP广播通信的使用 实战项目使用案例 1 UDP广播介绍 UDP广播地址固定IP地址为 XXX XXX XXX 255 如果向全网段发送广播消息 那么广播地址为 255 255 255 255 如果向单个网段发送广播消息 例如你的I
  • Java中方法的重载和重写

    重载是在同一个类中的具有相同方法名 不同参数 个数 类型 顺序 的方法的定义 构造方法 普通方法 抽象方法都可以重载 重写是在子类继承父类的时候重写 在子类重写的方法名必须和父类的方法名完全相同 可以用 Override检查是否是重写方法
  • 白盒测试和静态测试

    白盒测试技术是根据被测对象的结构 系统化设计测试用例的一种方法 又称透明盒测试 或结构测试 测试覆盖准则之白盒测试设计技术的核心代码覆盖标准 1 语句覆盖 2 判定覆盖 3 条件覆盖 4 判定条件覆盖 5 条件组合覆盖 6 路径覆盖 白盒测
  • LeetCode刷题之旅【多线程篇-4】中等: 1116. 打印零与奇偶数

    2019年11月22日 目录 题目 1116 打印零与奇偶数 解题1 Semaphore 信号量作屏障 解题2 synchronized独占锁 线程阻塞与唤醒 拓展 题目 1116 打印零与奇偶数 解题1 Semaphore 信号量作屏障
  • NVIDIA视频硬解码

    硬解码流程 创建cuda上下文 查询硬件解码器解码能力 创建解码器实例 使用第三方软件 如FFMPEG 进行Demux 使用第三方解析器 如FFMPEG 解析视频比特流 使用NVDECODE API启动解码 获取解码后的YUV进行进一步处理
  • 刷脸支付服务商帮助微信支付宝拓展市场服务客户

    如今的刷脸支付市场 随着微信刷脸支付 青蛙 的内测完成 马上就会和支付宝的 蜻蜓 有一场争夺市场的大战了 两大巨头打架 肯定会有很多的政策 到时候刷脸支付下面的人就能分一点汤 一定要记住 申请服务商是免费公开透明的 想要好好了解的就去支付宝
  • 大小端与结构体释疑

    本人在做项目过程中需要在ARM对从FPGA读取到的数据进行处理 在实际过程中产生了一些问题 在思考了后记录在此 1 大小端模式 大小端指数据在内存中的存储方式 小端指数据的高字节保存在内存的高地址处 低字节保存在内存的低地址处 大端模式则正
  • 【os模块】os.walk 获取指定路径下文件名

    os walk函数原型 os walk是python中的一个函数 函数声明 os walk top topdown True nerr r None top 目标路径 topdown 默认值是 True 表示首先返回顶级目录下的文件 然后再
  • c++ Sigmoid/Softmax/Argmax

    Sigmoid float sigmoid float x return 1 1 exp x float sigmoid dy dz float x return x 1 0 x float tanh dy dz float x retur
  • ES按日期滚动索引

    按日期滚动索引 环境 ES 6 9 ES 7 Centos 7 配置过程 创建索引 PUT localhost 9200 index 20210915 设置索引别名 写入别名和读取别名 PUT localhost 9200 index 20
  • 网络 -- n/24 计算IP范围

    1 IP地址 共分为四类 A B C D类 A类 从1 0 0 0 到 126 255 255 255 B类 从128 0 0 0 到 191 255 255 255 C类 从192 0 0 0 到 223 255 255 255 其中12
  • 关于输入、输出电容在 LDO 应用中的重要性

    关于输入 输出电容在 LDO 应用中的重要性 如何让LDO 产品在应用中达到更佳的稳定性 则用户在设计电路时 最好根据芯片 datasheet 的说明文档而定 下面以LP2985 3 3这个LDO为例 LP2985 3 3是低功耗 低压差
  • Vue基础(二)——模板语法

    一 指令 1 v bind 绑定属性 2 v on 绑定事件 3 v if和v show 1 介绍
  • tcp/ip在物理层/数据链路层 实现简单抓包

    socket的精妙之处在于协议族的横向转换和地址族的纵向转换 我们也可在更底层实现对流经host的数据流的监督和修改 尤其是监察数据 十分简单 这里是混杂模式实现对ip数据流的监察与对tcp数据流的简单查看 需要root权限 这里忽略了tc
  • 整理一下go的ci工具

    代码格式化 go fmt fileName go goimports 自动格式化import goimports w fileName go mod 自动更新 删除包 go mod tidy 检查注释是否符合导出 1 安装revive go
  • 关于如何修复烧写镜像文件失败的SD卡

    前言 使用某些软件 比如 win32 Disk Imager 向SD卡烧写镜像文件时 很有可能出现烧写失败的情况 通常如果烧写失败 系统会弹出请求格式化SD卡的提示框 此时不要点格式化 点了可能会造成不可挽救的结果 也可能不会 而是进行以下
  • 【C库函数】memcpy函数详解

    目录 memcpy 函数原型 参数讲解 返回值讲解 函数讲解 三个注意点 memcpy 拷贝内存块到目标空间 函数原型 void memcpy void dest const void src size t count 参数讲解 参数 de
  • 百度AI──自然语言处理使用教程

    百度AI 自然语言处理使用教程 情感倾向分析 创建自己的应用 python方式调用 安装Python SDK 创建一个 Python SDK客户端 配置AipNlp 调用接口 情感倾向分析 需要注意的几个点 完整代码 参考 创建自己的应用
  • Linux 配置 PaddleOCR环境

    配置环境 1 准备好CUDA和cudnn 安培架构GPU需配置CUDA 11 2 CUDNN 8 1 1 以下文档以安培架构GPU的为例 找到对应的版本下载CUDA https developer nvidia com cuda downl
  • 一位数组返回id和pid通过这两个参数转换为树形结构数据,和树形结构的渲染

    废话不多说直接上代码 html代码我是引用了一个jq的插件作为样式插件名字为 jOrgChart 具体内容大家可以评论到下方 div class com div class TheEditor 编辑 div div div div js代码