【问题标题】:jQuery Populate content inside a new element before appending itjQuery 在添加新元素之前填充内容
【发布时间】:2011-12-12 06:03:12
【问题描述】:

我正在尝试用数据填充featured,然后将其附加到#wrapper。这对我不起作用。我做错了什么?

var featured = '<div id="featured"></div>';
$('#imageTable tbody tr td img').each(function(){
    $(featured).append($(this).attr('src'));
});
$(featured).appendTo('#wrapper');

【问题讨论】:

    标签: javascript jquery append each


    【解决方案1】:

    与 Bryan Ross 的非常相似,只是以更有效的方式创建 div。它可能不那么直接,但我相信它的性能更高。

    var $f = $('<div>',{id:'featured'});
    $('img,#imageTable > td').each(function(i){
        $f.append($(this).attr('src');
    })
    $f.appendTo('#wrapper');
    

    【讨论】:

      【解决方案2】:
      var $featured = $('<div id="featured"></div>');
      $('#imageTable tbody tr td img').each(function(){
          $featured.append($(this).attr('src')).append('<br />');
      });
      $featured.appendTo('#wrapper');
      

      说明:

      当您在循环 $(featured) 中执行此操作时,它会为每个选定元素创建一个新的 div,因此只有最后一个 div 将附加到您的 #wrapper。您需要在 each 循环之外创建 jQuery 对象。

      【讨论】:

      • 哈哈同时回答。你忘了打开最后一个$(featured) 电话虽然
      【解决方案3】:

      这是因为你在循环中有$(featured) 调用。你只想调用一次。

      试试这个:

      var $featured = $('<div id="featured"></div>');
      $('#imageTable tbody tr td img').each(function(){
          $featured.append($(this).attr('src'));
      });
      $featured.appendTo('#wrapper');
      

      【讨论】: