我有以下代码:
$(document).ready(function() {
var ul = $("<div>");
ul.addClass("menu").appendTo('.menuwrapper');
});
function loop(obj, ul) {
$.each(obj, function(key, val) {
if($.isPlainObject(val)) { // object, call recursively
//if depth = 1 then { } else { }
var ul2 = $("<ul>").addClass('hide').appendTo(
$("<div>").append(key).appendTo(ul)
);
loop(val, ul2);
} else {
$("<li>", {
class: 'innerli'
}).text(val).appendTo(ul);
}
});
}
$.getJSON('test.json', function(data) {
var ul = $(".menu");
loop(data, ul);
});
test.json示例:
{"Dashboard":{"Submenu1":"Submenu1","Submenu2":"Submenu2"},"About us":"About us","Services":{"Service1":"Service1","Service2":"Service2"}}
我想在循环中添加一个条件,说明如果这是对象的x级别,那么就做'某事'(我在代码中添加了一条注释到我正在讨论的部分)。 / p>
答案 0 :(得分:3)
function loop(obj, ul,depth) {
$.each(obj, function(key, val) {
if($.isPlainObject(val)) { // object, call recursively
//if depth = 1 then { } else { }
var ul2 = $("<ul>").addClass('hide').appendTo(
$("<div>").append(key).appendTo(ul)
);
loop(val, ul2,(depth+1));
} else {
$("<li>", {
class: 'innerli'
}).text(val).appendTo(ul);
}
});
}
$.getJSON('test.json', function(data) {
var ul = $(".menu");
loop(data, ul, 0);
});
这应该告诉你每个递归级别的深度。
答案 1 :(得分:2)
通过计数器和递增计数器每个级别,如:
function loop(obj, ul,loopCount) {
loopCount++;
$.each(obj, function(key, val) {
if($.isPlainObject(val)) { // object, call recursively
//if depth = 1 then { } else { }
var ul2 = $("<ul>").addClass('hide').appendTo(
$("<div>").append(key).appendTo(ul)
);
loop(val, ul2,loopCount);
} else {
$("<li>", {
class: 'innerli'
}).text(val).appendTo(ul);
}
});
}
答案 2 :(得分:1)
function loop(obj, ul, depth) {
depth = depth || 1; // first level
...
loop(val, ul2, depth + 1);
}
第一个新行中的||
运算符允许您第一次调用该函数而不指定初始深度值 - 它将默认为1。