从json结构创建带有子项的列表
creating list with sub items from json structure
我正在创建一个列表,下面的代码包含在这个小提琴
<ul></ul>
var myList = [{
"title": "Home",
"sub": 0,
"url": "/home",
"show": 1
}, {
"title": "News",
"sub": 0,
"url": "/news",
"show": 1
}, {
"title": "About",
"sub": 1,
"url": "/about",
"show": 1,
child: [{
"title": "Contact",
"sub": 0,
"url": "/about/contact",
"show": 1
}]
}, {
"title": "Other",
"sub": 0,
"url": "/other",
"show": 0
}];
$.each(myList, function (entryIndex, entry) {
var title = this.title;
var show = "";
var sub = '';
var url = this.url;
if (!this.show) {
show = "style=color:grey;";
}
if (this.sub) {
sub = $("ul").append(this.child.text);
console.log(sub);
}
$("ul").append("<li " + show + "> " + title + sub + "</li>");
});
我得到的输出是,除了大约。
<ul>
<li> Home</li>
<li> News</li>
<li> About[object Object]</li>
<li style="color:grey;"> Other</li>
</ul>
我如何让孩子们出现,所以我得到
<ul>
<li> Home</li>
<li> News</li>
<li> About
<ul>
<li> Contact</li>
</ul>
</li>
<li style="color:grey;"> Other</li>
</ul>
试试这样:
<<p> 在线演示/strong>$(document).on('ready',function(){
var data = [{/*... your data*/}] ;
var endMenu =getMenu(data);
function getMenu(d ){
return d.map(function(node){
var subMenu = ( node.child && node.child.length > 0) ? '<ul>'+ getMenu(node.child) + '</ul>' : "";
return '<li>'+node.title + subMenu + '</li>' ;
});
}
$('#menu').html('<ul>'+endMenu.join('')+ '</ul>');
});
你所要做的就是检查你的对象是否有child
项,如果你再次执行getMenu(node.child)
函数,如:
var subMenu = ( node.child && node.child.length > 0) ? '<ul>'+ getMenu(node.child) + '</ul>' : "";
相关文章:
- 如何使用json将对象列表从java转换为javascript
- 区分JSON中的矩阵和列表列表
- 从多维嵌套json数组创建下拉列表
- 在play2框架中向json对象添加下拉列表项
- 从JSON填充列表(而不是HTML)
- 原始javascript将json对象中的项目打印到列表中的屏幕上
- 如何使用jQuery来解析json并将其作为列表输出到HTML中
- 将javascript中的JSON输出为不带jquery的列表
- 用javascript从列表对象(JSON的)构建diffrent选项卡
- 使用angular显示复杂json中的列表
- 如何将breadcrumb添加到现有的JSON+LD列表中
- JSON编码一个HTML列表——所有子项都显示在所有父项上
- 从Javascript动态构建JSON对象列表
- 使用JSON和JavaScript添加额外的html列表元素
- 选择菜单,将json列表与单数值进行匹配
- 如何使用json数据创建下拉列表
- 元素列表json后缺少]
- 如何获得Spotify播放列表JSON没有用户登录
- 比较列表json中的开始时间和结束时间
- 按名称、价格筛选JQuery列表..json数组,JQuery.grep()