javascript
  • jquery
  • 2011-12-25 93 views 1 likes 
    1

    我有以下脚本:jQuery的JSON嵌套循环

    function drawDimensions(divid) { 
        $.getJSON('dimensions.json', function(data) { 
         $.each(data, function(index) { 
          var ppp = $('#' + divid).append("<div class='dTitle'><img src='images/cleardot.gif' />" + index + "</div><br>"); 
          $.each(this, function(k, v) { 
           $('<div>').append(v).appendTo(ppp); 
          }); 
         }); 
        }); 
    } 
    drawDimensions('dim'); 
    

    我试图巢的div所以从第一循环的值将是div的父母在第二循环。

    我在做什么错?第二环路的div没有嵌套的第一个内,但第一那些后简单地附加..

    回答

    1

    ppp实际上是$('#' + divid)一引用,而不是到新创建的(外)div

    试试这个:

    var ppp = $("<div class='dTitle'><img src='images/cleardot.gif' />" + index + "</div><br>"); 
    ppp.appendTo('#' + divid); 
    
    +0

    完美的,谢谢你。 – user838437 2011-12-25 13:05:30

    2

    的一个明显的错误(可能不是唯一的)是ppp仍然会引用父DIV,不是你创建那里的一个。

    使用appendTo()你在内环做,或有分配独立的,如:

    function drawDimensions(divid) { 
        var $container = $('#' + divid); 
        $.getJSON('dimensions.json', function(data) { 
         $.each(data, function(index) { 
          var ppp = $("<div class='dTitle'><img src='images/cleardot.gif' />" + index + "</div><br>"); 
          $container.append(ppp); // or ppp.appendTo($container); 
          $.each(this, function(k, v) { 
           $('<div>').append(v).appendTo(ppp); 
          }); 
         }); 
        }); 
    } 
    drawDimensions('dim'); 
    

    尝试,看看它是如何去,并告诉我的意见。

    注意有关示例代码:

    • 我缓存获取div容器jQuery对象,因为只有一个反正
    • 此外,使用$的前缀,我用的变量。只是通常的做法与jQuery对象,不是必需的。
    +1

    +1为促进良好做法。 – PPvG 2011-12-25 13:38:57

    相关问题