我想迭代给定的json菜单中的每个数据
json是
var jsonMenu = {
"menu": [
{
"MenuId": "ApplicationId",
"MenuName": "Application",
"MenuLink": "#",
"Submenu":
[
{
"MenuId": "BasicInformationId",
"MenuName": "Basic Information",
"MenuLink": "#"
}
]
},
{
"MenuId": "ReviewandSubmissionID",
"MenuName": "Review and Submission",
"MenuLink": "#"
}
]
}
我使用给定的代码来迭代主菜单,并且可以正常工作
$.each(jsonMenu, function (key3, value3) {
$('<li id="' + value3.MenuId + '" class="menu-li"><span><img src="../Images/tab_arrow.png"/></span><a href="' + value3.MenuLink + '">' + value3.MenuName + '</a></li>').appendTo("#menuLeft");
});
但是如何从给定的json检索子菜单?
最佳答案
您应该在当前循环中使用另一个循环:
$.each(jsonMenu.menu, function (key, value) {
var $li = $('<li id="' + value.MenuId + '" class="menu-li"><span></span><a href="' + value.MenuLink + '">' + value.MenuName + '</a></li>');
if (value.Submenu) {
var $ul = $('<ul/>').appendTo($li);
$.each(value.Submenu, function (_, v) {
$ul.append('<li><a href="#">' + v.MenuName + '</a>...</li>');
});
}
$li.appendTo("#menu");
});
http://jsfiddle.net/7x5En/
为了提高效率,您还可以使用
for
循环而不是$.each()
实用程序函数,并且为了避免生成嵌套的空ul
元素(对于空的子菜单数组),可以使用Submenu
运算符检查typeof
属性的存在:if (typeof value.Submenu !== 'undefined' && value.Submenu.length) { // ... }