使用jQuery从对象数组中添加表元素

时间:2010-10-18 01:54:18

标签: jquery html-table append

我知道如果有足够的时间我会想到这一点,但如果某种善良的灵魂可以指向正确的方向,那肯定会很好。我对jQuery相对缺乏经验,但我有一些中级的javascript知识。

给定表单中的对象数组:

[
   {"value1":"10/14/2010", "value2":"1", "value3":"1178.94"},
   {"value1":"10/12/2010", "value2":"1", "value3":"1341.49"}
]

如何为每个数组元素添加一个tr,其中value1,value2和value3作为每个子td元素的内容?

阻止我的是:

var b = $('#table tbody');
tr = b.append($("<tr></tr>"));
tr.append($("<td>blah</td><td>blah</td><td>blah</td>"));

它附加了tr元素,我通过常规DOM方法证明了这一点。但它不会附加td元素。它的作用就像b.append()的结果不是附加的tr元素?我想这可能是对的,我需要这样做:

tr = $("<tr></tr>");
b.append(tr);
tr.append(...);

无论如何,你的帮助让我走上正轨非常感激。


别介意红利问题,但这里仅供参考,因为我最初发布了它。

前两个值实际上是第三个值的x和y坐标。因此,最左边的列显示日期,顶行显示数字1或2,小数值应该在相应的单元格中。任何关于最佳方法的想法也将受到赞赏。但是这个问题主要是为什么我的jQuery东西不起作用。

也就是说,表格需要如下所示:

              1       2
10/17/2010  2345.6  1543.2
10/16/2010          1234.5
10/15/2010  2222.2

但我试图看看我的整个ajax / JSON往返是否先行,甚至无法 !!我会做一种“合并连接”,逐步完成日期/列的列表,填写存在的值,并为缺失值做其他事情。

2 个答案:

答案 0 :(得分:1)

当你这样做时:

b.append($("<tr></tr>"));

它正在返回b,因此tr变量实际上是在引用tbody

试试这个:

var b = $('#table tbody');
tr = $("<tr></tr>").appendTo(b);
tr.append( "<td>blah</td><td>blah</td><td>blah</td>" );

这会改为使用jQuery's .appendTo() method来反转位置,以便返回新的<tr>

或者你可以像这样完全避免变量:

$("<tr></tr>").appendTo( '#table tbody' )
              .append("<td>blah</td><td>blah</td><td>blah</td>");

$("<tr></tr>").append("<td>blah</td><td>blah</td><td>blah</td>")
              .appendTo( '#table tbody' );

答案 1 :(得分:1)

试试这个:

//change arrayList to your array variable
var t = "";
$.each(arrayList, function(i, v) {
   t += '<tr><td>'+v.value1+'</td><td>'+v.value2+'</td><td>'+v.value3+'</td></tr>';
});
$('#table tbody').append(t);

应该这样做!