使用jQuery将内容添加到表中的特定列

问题描述:

我有一个表结构看起来像这样。一张外面的桌子,几乎每一张桌子上都有一张内表。使用jQuery将内容添加到表中的特定列

<table class="outertable"> 
    <tr> 
     <td> 
      <table class="innertable"> 
       <tr><td></td></tr> 
       <tr><td></td></tr> 
      </table> 
     </td> 
     <td> 
      <table class="innertable"> 
       <tr><td></td></tr> 
       <tr><td></td></tr> 
      </table> 
     </td> 
    </tr> 
    ..... 
</table> 

使用jQuery我需要遍历在外部表中的每个TD在某些特定的TDS添加一些独特的内容。我一直在尝试使用下面的代码。如果外部表没有任何子表,但正如你可以理解它不适用于子表一样,它可以正常工作。那么如何循环表格中的每个td来添加内容?

var row = 0; 
car column = 0; 
for (var i = 0; i < list.length; i++) { 
    $(".outertable tr:eq(" + row + ") td:eq(" + column + ")").append(list[i].content); 
    if (column == 1) { 
     column = 0; 
     row++; 
    } else { 
     column++; 
    } 
} 

我相信你的问题是,你的CSS选择器是贪婪的。 “.outertable tr”将在'.outert'之下获得所有儿童'tr'元素。相反,将选择器调整为仅获得直接的孩子“.outertable> tr”。选择器的'td'部分也一样。所以......

$(".outertable > tr:eq(" + row + ") > td:eq(" + column + ")").append(list[i].content); 
+0

谢谢,但我测试警报($( “outertable> TR:EQ(0)> TD:EQ(0)”。)HTML());这会给我第一个tr中第一个td的内容,但它只是给出了null。我究竟做错了什么? – mrrmatinsi 2010-09-15 21:32:04

+0

使用Firebug并在$(“。outertable> tr:eq(0)> td:eq(0)”)上执行console.log()。确认它正在拉动表格单元格。除非你的HTML被破坏,否则它应该工作正常。 – BBonifield 2010-09-15 21:55:35

$(".outertable tr td").each(function() { 
    $(this).append(NEWCONTENT); 
});