被jQuery代码段向TR追加TDs的失败所迷惑

被jQuery代码段向TR追加TDs的失败所迷惑,jquery,Jquery,这个问题背后的动机是理解下面的jQuery代码段失败的原因 注意:通过愚蠢、盲目的尝试和错误,我已经找到了可以工作(或似乎可以)的替代代码。因此,本问题的目的不是(本质上)解决下面所示的问题。相反,我的目标是尽可能多地理解它失败的原因 jQuery(document).ready(function ($) { var tds = []; for (var i = 0; i < 3; ++i) { var td = $('<td>'

这个问题背后的动机是理解下面的jQuery代码段失败的原因

注意:通过愚蠢、盲目的尝试和错误,我已经找到了可以工作(或似乎可以)的替代代码。因此,本问题的目的不是(本质上)解决下面所示的问题。相反,我的目标是尽可能多地理解它失败的原因

    jQuery(document).ready(function ($) {
      var tds = [];
      for (var i = 0; i < 3; ++i) {
        var td = $('<td>');
        tds.push(td);
      }
      var $tds = $(tds);
      var $row1 = $('#row1');
      $tds.appendTo($row1);
    });

您可以从doElement数组中创建新的jQuery对象,而不是从
jQuery
对象数组中创建新的jQuery对象,因此此行是错误的:

var $tds = $(tds);

最简单的修复方法是将
$('')
更改为
$('')[0]
,以获得实际的
数据元素。您也可以在那里使用
document.createElement('td')

如果jQuery无法将jQuery包装器数组转换为单个包装器对象,请尝试以下操作

jQuery(function ($) {
    var $tds = $();
    for (var i = 0; i < 3; ++i) {
        var td = $('<td/>', {
            text: i
        });
        $tds = $tds.add(td);
    }
    var $row1 = $('#row1');

    $tds.appendTo($row1);
});
jQuery(函数($){
var$tds=$();
对于(变量i=0;i<3;++i){
var td=$(''{
正文:i
});
$tds=$tds.add(td);
}
变量$row1=$(“#row1”);
$tds.appendTo(第1行);
});

演示:

非常感谢您提供的非常有用的回复。我希望我能选择你的和Paulpro的。在我的经验中,很少有两个如此优秀的答案几乎同时出现。。。
jQuery(function ($) {
    var $tds = $();
    for (var i = 0; i < 3; ++i) {
        var td = $('<td/>', {
            text: i
        });
        $tds = $tds.add(td);
    }
    var $row1 = $('#row1');

    $tds.appendTo($row1);
});