2009-10-31 76 views
13

我有一张需要动态添加列的数据表。可以说我有这个基本的表格开始:使用jQuery插入表格列

<table> 
<tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr> 
<tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr> 
<tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr> 
</table> 

我想插入每一行小区1和小区2之间的列...我已经试过,但它只是不喜欢工作我希望......

$(document).ready(function(){ 
$('table').find('tr').each(function(){ 
    $(this).prepend('<td>cell 1a</td>'); 
}) 
}) 

回答

27

试试这个:

$(document).ready(function(){ 
    $('table').find('tr').each(function(){ 
     $(this).find('td').eq(0).after('<td>cell 1a</td>'); 
    }); 
}); 

你原来的代码将列添加到每一行的末尾,而不是在列之间。这将找到第一列并将第一列旁边的单元格添加。

+0

非常感谢,这个工作很完美!...... *砸头*我应该寻找的细胞,并将其放置后。我真的需要一些咖啡因LOL – Mottie 2009-10-31 19:29:29

+0

我实际上最终使用了'td:eq(0)',因为有时候我需要将一列插入到具有多于3列的表中,然后我需要做的是改变变量...再次感谢您的帮助! – Mottie 2009-10-31 19:57:47

+0

这是一个更好的主意。我已经改变了我的答案,包括这一点。 – 2009-10-31 20:12:45

2
$('table > tr > td:first-child').after('<td>cell 1a</td>'); 

tr > td一个tr后选择第一级td,和after嵌入式元件的外部数据。

+0

我试过这个,但它没有起作用,不过谢谢 – Mottie 2009-10-31 19:30:03

+2

这是行不通的,因为大多数(如果不是全部的话)浏览器会围绕''标签包装所有行,所以选择器需要是“'table > tbody> tr> td:first-child'“。当然,这可能是一个有点慢的查询执行,因为jQuery将不得不做大量的过滤来获取大表中的所有单元格... – 2009-10-31 19:33:50

0
$('td:first-child').after('&lt;td&gt;new cell&lt;/td&gt;');