我使用嵌套的$ .each函数迭代嵌套对象的json对象。问题是,当我使用内部$ .each遍历嵌套对象时,它返回所有嵌套对象的键,而不仅仅是第一个嵌套对象。在第二次迭代中,它返回所有键,而不是第一个嵌套对象的键,依此类推。这是代码:
-Filter
var data = {
'1': {
'a': '1a',
'b': '1b',
'c': '1c'
},
'2': {
'a': '2a',
'b': '2b',
'c': '2c'
},
'3': {
'a': '3a',
'b': '3b',
'c': '3c'
}
};
var my_ul = $('#mydiv ul');
$.each(data, function(key, value) {
$('<li>', {
html: key + '<ul></ul>'
}).appendTo(my_ul);
var deep_ul = $('#mydiv ul li ul');
$.each(value, function(k, v) {
$('<li>', {
html: k + ':' + v
}).appendTo(deep_ul);
});
});
结果如下:http://jsfiddle.net/TsJP5/82/
我做错了什么。我希望它能给出
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">
<ul></ul>
</div>
<div id="test"></div>
依旧......
答案 0 :(得分:2)
全部在你的jQuery DOM操作中。选择器#mydiv ul li ul
正在#mydiv中拉出每个ycendent ul节点。
相反,我发现它最干净的只是逐个构建每个li和decendent ul并将它们附加到父节点:
var data = {
'1':{
'a':'1a',
'b':'1b',
'c':'1c'
},
'2':{
'a':'2a',
'b':'2b',
'c':'2c'
},
'3':{
'a':'3a',
'b':'3b',
'c':'3c'
}
};
var my_ul = $('#mydiv ul');
$.each(data, function(key, value){
var li = $('<li>', {html:key});
var deep_ul = $('<ul></ul>');
$.each(value, function(k, v){
$('<li>', {html:k + ':' + v}).appendTo(deep_ul);
});
deep_ul.appendTo(li)
li.appendTo(my_ul);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">
<ul>
</ul>
</div>
<div id="test">
</div>
&#13;