jQuery 迭代嵌套对象显示所有嵌套对象的键

标签 jquery json

我正在使用嵌套 $.each 函数迭代嵌套对象的 json 对象。问题是,当我使用内部 $.each 循环遍历嵌套对象时,它返回所有嵌套对象的键,而不仅仅是第一个嵌套对象。在第二次迭代中,它返回所有键减去第一个嵌套对象的键,依此类推。这是代码:

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);
  });
});
<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>

结果如下:http://jsfiddle.net/TsJP5/82/

我做错了什么。我希望它能给

 - 1  +a : a1
      +b : b1
      +c : c1
 - 2  +a : a2
      +b : b2
      +c : c2 

等等...

最佳答案

这一切都在您的 jQuery DOM 操作中。选择器#mydiv ul li ul正在拉动#mydiv中的每个后代ul节点。

相反,我发现最干净的方法是单独构建每个 li 和后代 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);
});
<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>

关于jQuery 迭代嵌套对象显示所有嵌套对象的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008698/

相关文章:

javascript - 如何循环 jquery 返回的 JSON 数据?

php - 使用 PHP 和 jQuery 快速旋转图像

jquery - css 事件类 jquery

jquery - 如何使用 Google Maps API v3.0 强制重绘?

javascript - 如何使用 angularjs 基于复选框选中和取消选中来制作复选框列表?

python - 将 json 字符串转换为 python 对象

jquery - $(document).ready() 内的范围?

python - json 存储未正确更新值 kivy

ios - UIRefreshControl 与两个异步 json 下载来填充 UITableView 行和自定义标题 View

ios - 解析我的 SWIFT 字典