Jq自定义的方法绑定树结构
1.先上效果图 (借鉴博客)

2.这边不做样式的只做结构
function toTreeData(data) {
var pos = {};
var tree = [];
var i = 0;
while (data.length != 0) {
if (data[i].pid == 0) {
tree.push({
id: data[i].id,
text: data[i].text,
children: []
});
pos[data[i].id] = [tree.length - 1];
data.splice(i, 1);
i--;
} else {
var posArr = pos[data[i].pid];
if (posArr != undefined) {
var obj = tree[posArr[0]];
for (var j = 1; j < posArr.length; j++) {
obj = obj.children[posArr[j]];
}
obj.children.push({
id: data[i].id,
text: data[i].text,
children: []
});
pos[data[i].id] = posArr.concat([obj.children.length - 1]);
data.splice(i, 1);
i--;
}
}
i++;
if (i > data.length - 1) {
i = 0;
}
}
return tree;
}
var data = [
{
"id": "CU201407140001",
"pid": "0",
"text": "壳牌中国"
},
{
"id": "CU201407140002",
"pid": "CU201407140001",
"text": "壳牌北京分公司"
},
{
"id": "CU201407140003",
"pid": "CU201407140001",
"text": "壳牌上海分公司"
},
{
"id": "CU201407140004",
"pid": "CU201407140001",
"text": "壳牌广州分公司"
},
{
"id": "CU201407140005",
"pid": "CU201407140001",
"text": "壳牌深圳分公司"
},
{
"id": "CU201407140006",
"pid": "CU201407140001",
"text": "壳牌武汉分公司"
},
{
"id": "CU201407140007",
"pid": "CU201407140001",
"text": "壳牌成都分公司"
},
{
"id": "CU201407140008",
"pid": "CU201407140001",
"text": "壳牌海南分公司"
}
];
$(function () {
$.ajax({
url:hostAddress+'/api/Customer/GetCustomerName?customerid=CU201407140001',
type:'GET',
contentType:'application/json',
beforeSend: function (request) {
request.setRequestHeader('Authorization',token_type+access_token);
},
success:function(data){
var tree = toTreeData(data);
var orag="";
$.each(tree, function (key, value) {
$('#list').empty();
orag += " <li><span>" + value.text + "</span>";
if (value.children!=null)
{
$.each(value.children, function (k, v) {
orag += "<ul> <li><span>" + v.text + "</span></li>";
if (v.children!=null)
{
$.each(v.children, function (kk, vv) {
orag += "<ul> <li><span>" + vv.text + "</span></li>";
});
orag += "</ul>";
}
});
orag += "</ul>";
}
orag += "</li>";
console.log(orag);
$("#list").html(orag);
})
}
});
})
function fn(data, pid) {
var result = [], temp;
for (var i in data) {
if (data[i].pid == pid) {
result.push(data[i]);
temp = fn(data, data[i].id);
if (temp.length > 0) {
data[i].children = temp;
}
}
}
return result;
}
Jq自定义的方法绑定树结构的更多相关文章
- 模拟JQUERY的延迟方法绑定
模拟JQUERY的延迟方法绑定, 对于延迟方法绑定,各种语言都有不同的描述 什么回调啊,函数指针啊,委托啊,事件啊等,其实也就是那么大回事,不过用好这些特性,对于扩展和架构是非常有好处的, 好处自然就 ...
- 移动端jq及zepto事件绑定
最近做移动端网页,用到了zepto.js , 其大致用法跟 jquery 差不多,但是在时间绑定的时候被困了好久的坑. 这里说的主要是给未来元素绑定事件.未来元素:这里指的是通过 ajax 请求得到数 ...
- JQ自定义下拉列表插件
自从上次做了JQ自定义分页插件和表格插件后,就没在自定义过插件了,这一个月都在用linq和ef,基本前端都没怎么去碰了,今天有个同事说有个项目需要在下拉框里面带有复选框,本来想网上找下插件的,一想,其 ...
- JQ的ready()方法与window.onload()的区别与联系
JQ的ready()与window.onload()方法都是在文档加载完毕之后才会被触发的方法,但它们之间的区别也是很明显的. 1.区别与联系: $(document).ready() windo ...
- element-UI中el-select下拉框可搜索时候,filter-method自定义搜索方法
使用element-UI框架的使用,我们经常使用el-select下拉框,很多时候还需要使用可搜索的下拉框,然后elementUI官网的实例中只是提了一下filter-method可以自定义搜索方法, ...
- jq自定义下拉菜单,在点击非当前下拉菜单区域时,关闭下拉菜单(点击事件的对象不是目标元素本身)
jq自定义下拉菜单,在点击非当前下拉菜单区域时,关闭下拉菜单(点击事件的对象不是目标元素本身) //点击非当前下拉菜单区域时,关闭下拉菜单 $(document).mousedown(function ...
- JQ动态生成节点绑定事件无效问题
最近做项目的时候遇见了一个问题,通过jq将动态节点绑定到dom节点上,并且为动态节点绑定方法,此方法再次为动态节点添加动态节点,但在刷新之后,动态节点上的方法失效了,过程为:创建动态节点->动态 ...
- C# - List.Sort()自定义排序方法
本文通过示例介绍了C#中典型容器List.Sort()的自定义排序方法,进而引出了C#中自定义排序的核心接口及方法 项目地址:自定义Sort方法 - SouthBegonia's Github Lis ...
- Vue - 自定义组件双向绑定
前言 无论在任何的语言或框架中,我们都提倡代码的复用性.对于Vue来说也是如此,相同的代码逻辑会被封装成组件,除了复用之外,更重要的是统一管理提高开发效率.我真就接手过一个项目,多个页面都会用到的列表 ...
随机推荐
- 干货 | TensorFlow的55个经典案例
转自1024深度学习 导语:本文是TensorFlow实现流行机器学习算法的教程汇集,目标是让读者可以轻松通过清晰简明的案例深入了解 TensorFlow.这些案例适合那些想要实现一些 TensorF ...
- jQuery访问json文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Centos 7 安装图形化界面
Centos 7 默认是没有图形化界面的,但我们很多人在习惯了 Windows 的图形化界面之后,总是希望有一个图形化界面从而方便我们使用,这里介绍一下 CentOS7安装图形化桌面系统的方法. 一. ...
- Ubuntu终端命令行缩短显示路径
平时我们使用linux终端命令行的时候,常常会被一个问题困扰,那就是文件路径过长, 有时候甚至超过了一行,这样看起来非常别扭,其实只要两步就可以解决这个问题: 1,修改.bashrc文件(用户根目录下 ...
- 【数据分析学习】016-numpy数据结构
通常对数据的矩阵进行操作,就用numpy操作,打开txt文件 使用help()去查询文档,可以看到官方的注释 import numpy path = r'F:\数据分析专用\数据分析与机器学习\wor ...
- python3发送邮件
import smtplib from email.mime.text import MIMEText from email.utils import formataddr import psutil ...
- vue 函数配置项watch以及函数 $watch 源码分享
Vue双向榜单的原理 大家都知道Vue采用的是MVVM的设计模式,采用数据驱动实现双向绑定,不明白双向绑定原理的需要先补充双向绑定的知识,在watch的处理中将运用到Vue的双向榜单原理,所以 ...
- Project Euler 18 Maximum path sum I( DP and 记忆化搜索 )
题意:求从三角形顶端出发到达底部,所能够得到的最大路径和 方法一:记忆化搜索 /************************************************************ ...
- mplayer configure选项中文注释
mplayer configure选项中文注释(MPlayer-1.0rc2) http://blogold.chinaunix.net/u3/104581/showart_2322466.html ...
- 【Codeforces 469B】Chat Online
[链接] 我是链接,点我呀:) [题意] [题解] 因为你的朋友的时间是固定的. 你完全可以开一个tag[50]的数组,如果tag[i]=1说明i时刻你的基友在线(扫描基友的时间就能 得到 然后你在判 ...