如何使用jQuery将行添加到表中?

您好我正在尝试使用jQuery将一行添加到表,但它不工作。 可能是什么原因?

而且,我可以在新添加的行中添加一些值吗?

这里是代码:

<html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $('a').click(function() { $('#myTable').childs('tr').append('<tr class="child"><td>blahblah<\/td></ tr>'); }); </script> <title></title> </head> <body> <a href="">Link</a> <table id="myTable"> <tbody> <tr> <td> test </td> </tr> </tbody> </table> </body> </html> 

我假设你想将这一行添加到<tbody>元素,并且简单地在<table>上使用append()会将<tr>插入<tbody> ,这可能会导致不良结果。

 $('a').click(function() { $('#myTable tbody').append('<tr class="child"><td>blahblah</td></tr>'); }); 

编辑:这是完整的源代码,它确实工作:(注意$(document).ready(function(){});这是以前不存在。

 <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $('a').click(function() { $('#myTable tbody').append('<tr class="child"><td>blahblah</td></tr>'); }); }); </script> <title></title> </head> <body> <a href="javascript:void(0);">Link</a> <table id="myTable"> <tbody> <tr> <td>test</td> </tr> </tbody> </table> </body> </html> 

以下代码工作

 <html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> function AddRow() { $('#myTable').append('<tr><td>test 2</td></tr>') } </script> <title></title> </head> <body> <input type="button" id="btnAdd" onclick="AddRow()"/> <a href="">test</a> <table id="myTable"> <tbody > <tr> <td> test </td> </tr> </tbody> </table> </body> </html> 

请注意,即使表中包含一个<tbody>元素,它仍然可以使用jQuery 1.4 :

从版本1.4(?)jQuery自动检测你试图插入的元素(使用任何append(),prepend(),before()或after()方法)是一个<tr>并将其插入到第一个<tbody>放在你的表中,如果不存在的话,将它包装成一个新的<tbody>

也许这是你正在寻找的答案。 它find<tr />的最后一个实例并在它后面添加新的行:

 <script type="text/javascript"> $('a').click(function() { $('#myTable tr:last').after('<tr class="child"><td>blahblah<\/td></tr>'); }); </script> 

我总是使用下面的代码更具可读性

 $('table').append([ '<tr>', '<td>My Item 1</td>', '<td>My Item 2</td>', '<td>My Item 3</td>', '<td>My Item 4</td>', '</tr>' ].join('')); 

或者如果有tbody

 $('table').find('tbody').append([ '<tr>', '<td>My Item 1</td>', '<td>My Item 2</td>', '<td>My Item 3</td>', '<td>My Item 4</td>', '</tr>' ].join('')); 

你应该附加到表格而不是行。

 <script type="text/javascript"> $('a').click(function() { $('#myTable').append('<tr class="child"><td>blahblah<\/td></tr>'); }); </script> 

尝试:

 $("#myTable").append("<tr><%= escape_javascript( render :partial => name_of_partial ) %></tr>"); 

而在partial ,你应该有:

 <td>row1</td> <td>row2</td>