2010-09-15 42 views
2

我有一個表結構看起來像這樣。一張外面的桌子,幾乎每一張桌子上都有一張內表。使用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++; 
    } 
} 

回答

1

我相信你的問題是,你的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

0
$(".outertable tr td").each(function() { 
    $(this).append(NEWCONTENT); 
}); 
相關問題