Jquery树型表格

简介: 效果图第一次写简书好激动,就是想和大家分享下 O(∩_∩)O哈哈哈~干货来了~~~~~~~~~首先是对数据的处理接口返回的没有结构的数据,只有数据关系这里要把这些没有结构的数据,进行树型结构处理,你们自...
img_aa44fa4c8cba7b47936692c96a8df7e6.png

效果图

第一次写简书好激动,就是想和大家分享下 O(∩_∩)O哈哈哈~
干货来了~~~~~~~~~

  1. 首先是对数据的处理
img_7997a8b34eda20d4eb3a585167beb78e.png

接口返回的没有结构的数据,只有数据关系

这里要把这些没有结构的数据,进行树型结构处理,你们自己看吧,copy调用就行了<( ̄3 ̄)> !,下面是树型处理的方法:
<pre>
// 入参:生成树的数组,id的属性名,父id的属性名,生成的子数组的,排序的属性,升序asc/降序desc
generateTree: function(array, idName, parentIdName, childrenName, sortName, sortType) {
if (!array) {
return [];
}
idName = idName || "id";
parentIdName = parentIdName || "parentId";
childrenName = childrenName || "children";
//sortName = sortName || "sort";
sortType = sortType || "asc";
var result = [];
var leafList = [];
var parent = {}; // 缓存所有的父id
// 先收集所有的父元素id
$.each(array, function(i, n) {
if (!parent[n[parentIdName]]) {
parent[n[parentIdName]] = 1;
}
});
// 区分叶子节点和父节点,父节点放result里,叶子节点放leafList里
$.each(array, function(iLeaf, leaf) {
if (typeof(leaf[childrenName]) == 'undefined') {
leaf[childrenName] = [];
}
if (parent[leaf[idName]] == 1) {
// 当前元素是父节点
result.push(leaf);
} else {
// 当前元素是叶子节点
leafList.push(leaf);
}
});
// 排序
if (sortName) {
$.kingdom.quickSort(leafList, 0, leafList.length - 1, sortName, sortType);
}
// 当result的length和array的length一样时,说明全是叶子元素,则跳出
if (leafList.length == array.length) {
return leafList;
}
// 此时,result里面没有叶子元素了
// 把叶子元素放入result中对应元素的属性中
// 若没有对应元素匹配,则直接放到result数组中
$.each(leafList, function(iLeaf, leaf) {
// 是否已经放入结果集
var hasPushed = false;
$.each(result, function(iParent, parentObject) {
if (leaf[parentIdName] == parentObject[idName]) {
// 把叶子元素放入result中对应元素的属性中
parentObject[childrenName].push(leaf);
hasPushed = true;
return false; // 实现break功能
}
});
$.each(result, function(i, e) {
$.kingdom.quickSort(e[childrenName], 0, e[childrenName].length - 1, idName, "asc")
});
// result中没有对应元素匹配,则直接放到result数组中
if (hasPushed == false) {
result.push(leaf);
}
});
// 继续找叶子元素,直到全是叶子元素
return $.kingdom.generateTree(result, idName, parentIdName, childrenName, sortName, sortType);
}
</pre>
2,渲染,我写的渲染是点一次生成一次的,不是点一次调用一次接口
一开始写的点一次调一次几口,太浪费资源了,我把接口返回的数据,定义个变量存了起来,顺便又对数据修饰了下,方便我渲染。(o)/~

img_23c7755dba90f0c1383874172868258a.png

数据处理

img_c9f1d196505d4f86c37cef765b159221.png

生成后的数组

填充后的效果:

img_6e01456252c3e08db2eef6a6b92ec3f9.png

先得到是最顶级的元素

3,下面来看看控制怎么写的 O(∩_∩)O~

img_f287800c5db10bab3b8634066f8ae34c.png

jquery控制

img_fd003b5516ebe0328ea1c1fe298f7727.png

递归的方法判断无限层级下的状态

谢谢大家!!!

目录
相关文章
|
JavaScript
jQuery 表格全选反选
jQuery 表格全选反选
48 0
|
1月前
|
JavaScript
jQuery 树型菜单插件(Treeview)
jQuery 树型菜单插件(Treeview)
58 2
|
6月前
|
JSON JavaScript 数据格式
jQuery 树型菜单完整代码
jQuery 树型菜单完整代码
|
11月前
|
XML JavaScript 小程序
使用jquery treetable 实现树形表格拖拽
这里记录一下使用jquery treetable时遇到的坑。 我这里的需求是做一个树形表格,并且可拖拽。 最后要实现的效果大概是这样的:(文末有实例)
51 0
|
12月前
|
JavaScript BI
jQuery根据填写的input的数值导出excel表格
jQuery根据填写的input的数值导出excel表格
57 0
|
12月前
|
JavaScript Java
jQuery+Datatables实现表格批量删除功能
jQuery+Datatables实现表格批量删除功能
162 0
|
JavaScript
jQuery 动态添加表格数据
jQuery 动态添加表格数据
47 0
|
存储 JSON JavaScript
JQuery Ztree 树插件配置与应用小结 2
JQuery Ztree 树插件配置与应用小结
197 0
|
JSON JavaScript 前端开发
JQuery Ztree 树插件配置与应用小结 1
JQuery Ztree 树插件配置与应用小结
138 0
|
JavaScript 前端开发 Java
jquery实现动态表格项目(表格增加删除/全选/表格变色特效等功能)(附源码+javaWEB开发如果需要可以直接使用)
jquery实现动态表格项目(表格增加删除/全选/表格变色特效) 🍅 Java学习路线:搬砖工的Java学习路线 🍅 作者:程序员小王 🍅 程序员小王的博客:https://www.wolai.com/wnaghengjie/ahNwvAUPG2Hb1Sy7Z8waaF 🍅 扫描主页左侧二维码,加我微信 一起学习、一起进步 🍅 欢迎点赞 👍 收藏 ⭐留言 📝
346 0
jquery实现动态表格项目(表格增加删除/全选/表格变色特效等功能)(附源码+javaWEB开发如果需要可以直接使用)