我目前有这个:
$.getJSON('test.json', function(data) {
var items = [];
$.each(data, function(key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ul/>', {
'class': 'my-new-list',
html: items.join('')
}).appendTo('body');
});
test.json 看起来像这样:
{"key1":{"key11":"value11","key12":"value12"},"key2":"value2","key3":"value3"}
我越来越:
[object Object]
value2
value3
如何更改它,以便无论我有多少个嵌套值,它都会循环遍历所有嵌套项?
所以对于上面的例子我会得到
value1
value11
value12
value2
value3
您可以创建一个递归循环函数,但会遇到一个问题:当属性是对象时,没有可显示的文本,因为没有字符串。所以,你最终会得到:
- - value11
- value12
- value2
- value3
因为虽然value2
是为项目 #2 显示的字符串,它是为项目 #1 显示的对象。
无论如何,这是我编造的:http://jsfiddle.net/uXww2/ http://jsfiddle.net/uXww2/.
// obj is the object to loop, ul is the ul to append lis to
function loop(obj, ul) {
$.each(obj, function(key, val) {
if(val && typeof val === "object") { // object, call recursively
var ul2 = $("<ul>").appendTo(
$("<li>").appendTo(ul)
);
loop(val, ul2);
} else {
$("<li>", {
id: key
}).text(val).appendTo(ul);
}
});
}
$.getJSON('test.json', function(data) {
var ul = $("<ul>");
loop(data, ul);
ul.addClass("my-new-list").appendTo('body');
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)