jQueryeach不会对对象中的每个元素执行html

发布于 2024-11-25 17:37:24 字数 369 浏览 0 评论 0原文

代码如下:

var object = [
  {'item1': 'value1a', 'item2':'value2a', 'item3':'value3a'},
  {'item1': 'value1b', 'item2':'value2b', 'item3':'value3b'},
];


$.each(object, function(key,value) { 
  $('.my-div').html('<li>'+ value.item1 + '</li>');
});

仅输出一个

  • value1b
  • 。由于某种原因,跳过除最后一次迭代之外的所有迭代。

    想法?

    Here's the code:

    var object = [
      {'item1': 'value1a', 'item2':'value2a', 'item3':'value3a'},
      {'item1': 'value1b', 'item2':'value2b', 'item3':'value3b'},
    ];
    
    
    $.each(object, function(key,value) { 
      $('.my-div').html('<li>'+ value.item1 + '</li>');
    });
    

    This outputs only one <li>value1b</li>. For some reason skips over all except the last iteration.

    Thoughts?

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(5

    内心激荡 2024-12-02 17:37:24

    它会覆盖您的所有 HTML,而不是附加它。

    更改

    $('.my-div').html('<li>'+ value.item1 + '</li>');
    

    $('.my-div').append('<li>'+ value.item1 + '</li>');
    

    工作演示:http://jsfiddle.net/AlienWebguy/hpLa6/1/

    It's overwriting all your HTML instead of appending it.

    Change

    $('.my-div').html('<li>'+ value.item1 + '</li>');
    

    to

    $('.my-div').append('<li>'+ value.item1 + '</li>');
    

    Working demo: http://jsfiddle.net/AlienWebguy/hpLa6/1/

    最近可好 2024-12-02 17:37:24

    之前的编辑将被覆盖。它相当于这样做:(

    int total = 0;
    for (int x=0;x<10;++x)
       total = x;
    

    显然是一种不同的编程语言)

    上面的答案将是“9”而不是预期的答案。

    您需要附加每个 html 调用。

    编辑:

    天哪,人们打败了我......:-(

    The previous edits are being overwritten. Its the equivalent of doing this:

    int total = 0;
    for (int x=0;x<10;++x)
       total = x;
    

    (obviously a different programming language)

    The above answer would be "9" instead of the expected answer.

    You need to append each html call.

    Edit:

    Holy crap people beat me... :-(

    会发光的星星闪亮亮i 2024-12-02 17:37:24

    您在每次迭代时都会覆盖它。您需要这样做

    $('.my-div').html($('.my-div').html()+'

  • '+ value.item1 + '
  • ;');

    编辑以修复错误

    You are overwriting it on each iteration. You need to do like

    $('.my-div').html($('.my-div').html()+'<li>'+ value.item1 + '</li>');

    edited to fix bug

    心碎的声音 2024-12-02 17:37:24

    是否有必要为此使用 jQuery,为什么不只使用一个简单的:

    for (var obj in objects) {
        $('.my-div').append('<li>'+ obj.item1 + '</li>');
    }
    

    提示:我会避免在任何语言中使用 id object

    Is it necessary to use jQuery for this, why not just use a simple:

    for (var obj in objects) {
        $('.my-div').append('<li>'+ obj.item1 + '</li>');
    }
    

    Tip: I would avoid using the id object in any language

    梦里的微风 2024-12-02 17:37:24

    由于有些人因为效率低下而喜欢投反对票...这会更有效,因为它只选择节点一次

    $(function(){
          var object = [
              {'item1': 'value1a', 'item2':'value2a', 'item3':'value3a'},
              {'item1': 'value1b', 'item2':'value2b', 'item3':'value3b'},
          ];
    
        var content = '';
        $.each(object, function(key,value) { 
           content += '<li>'+ value.item1 + '</li>';    
        });
        $('.my-div').html(content);
    });
    

    Since some people like to downvote because of inefficiency... this would be more efficient, as it selects the node only once

    $(function(){
          var object = [
              {'item1': 'value1a', 'item2':'value2a', 'item3':'value3a'},
              {'item1': 'value1b', 'item2':'value2b', 'item3':'value3b'},
          ];
    
        var content = '';
        $.each(object, function(key,value) { 
           content += '<li>'+ value.item1 + '</li>';    
        });
        $('.my-div').html(content);
    });
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文