https://blog.csdn.net/u013373006/article/details/82108873
需求:首先这是一个数据集—js的类型,我们需要把生成一个tree形式的对象 :
var data = [
{ id: 1, name: “cop1”, pid: 0 ,V_IS_EXPAND:“Y”,level:1,V_IS_DATA:“Y”},
{ id: 2, name: “cop2”, pid: 1 ,V_IS_EXPAND:“Y”,level:2,V_IS_DATA:“Y”},
{ id: 3, name: “cop3”, pid: 1 ,V_IS_EXPAND:“N”,level:2,V_IS_DATA:“N”},
{ id: 4, name: “cop4”, pid: 2 ,V_IS_EXPAND:“N”,level:3,V_IS_DATA:“N”},
{ id: 5, name: “cop5”, pid: 0 ,V_IS_EXPAND:“Y”,level:1,V_IS_DATA:“N”},
{ id: 6, name: “cop6”, pid: 5 ,V_IS_EXPAND:“Y”,level:2,V_IS_DATA:“N”},
{ id: 7, name: “cop7”, pid: 6 ,V_IS_EXPAND:“N”,level:3,V_IS_DATA:“N”},
{ id: 8, name: “cop8”, pid: 6 ,V_IS_EXPAND:“N”,level:3,V_IS_DATA:“N”},
];
js实现数树级递归方法:
使用jquery,生成上述效果图的完整实例:
<script type="text/javascript">
$(function () {
var data = [
{ id: 1, name: "cop1", pid: 0 ,V_IS_EXPAND:"Y",level:1,V_IS_DATA:"Y"},
{ id: 2, name: "cop2", pid: 1 ,V_IS_EXPAND:"Y",level:2,V_IS_DATA:"Y"},
{ id: 3, name: "cop3", pid: 1 ,V_IS_EXPAND:"N",level:2,V_IS_DATA:"N"},
{ id: 4, name: "cop4", pid: 2 ,V_IS_EXPAND:"N",level:3,V_IS_DATA:"N"},
{ id: 5, name: "cop5", pid: 0 ,V_IS_EXPAND:"Y",level:1,V_IS_DATA:"N"},
{ id: 6, name: "cop6", pid: 5 ,V_IS_EXPAND:"Y",level:2,V_IS_DATA:"N"},
{ id: 7, name: "cop7", pid: 6 ,V_IS_EXPAND:"N",level:3,V_IS_DATA:"N"},
{ id: 8, name: "cop8", pid: 6 ,V_IS_EXPAND:"N",level:3,V_IS_DATA:"N"},
];
GetData(0, data);
$("body").append(menus);
});
//菜单列表html
var menus = '';
//根据菜单主键id生成菜单列表html
//id:菜单主键id
//arry:菜单数组信息
function GetData(id, arry) {
var childArry = GetParentArry(id, arry);
if (childArry.length > 0) {
menus += '<ul>';
for (var i in childArry) {
menus += '<li>' + childArry[i].name;
GetData(childArry[i].id, arry);
menus += '</li>';
}
menus += '</ul>';
}
}
//根据菜单主键id获取下级菜单
//id:菜单主键id
//arry:菜单数组信息
function GetParentArry(id, arry) {
var newArry = new Array();
for (var i in arry) {
if (arry[i].pid == id)
newArry.push(arry[i]);
}
return newArry;
}
</script>