jQuery AJAX在表的末尾添加表tr

时间:2012-02-27 10:31:58

标签: php jquery ajax html-table

我有jQuery代码,可以像这样添加对表的最后<tr>的响应:

var table = '<td>' + result.table.product + '</td><td>' + result.table.code + '</td><td>' + result.table.value + '</td><td>' + result.table.time + '</td>';
$('#poo tr:last').after(table);

这是我的表:

<?php

$sql="SELECT * FROM wp_scloyalty WHERE userid = '$user_id' ORDER BY date ASC";
$result=mysql_query($sql);
?> 
<table id="poo" style="margin:10px 0px 0px 0px;" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
    <td><strong>Product</strong></td>
    <td><strong>Code</strong></td>
    <td><strong>Value</strong></td>
    <td><strong>Date Redeemed</strong></td>
</tr>
<?php while($rows=mysql_fetch_array($result)){ ?>  
<tr class="currentpoints">
    <td><? echo $rows['product']; ?></td>
    <td><? echo $rows['code']; ?></td>
    <td><? echo $rows['value']; ?></td>
    <td><? echo $rows['date']; ?></td>
</tr>  
<? } ?>
<tr class="currentpoints">
    <td id="producttd"></td>
    <td id="codetd"></td>
    <td id="valuetd"></td>
    <td id="datetd"></td>
</tr>  
</table>

我的问题是,当我添加多个条目时,它会尝试将它们全部放入最后一个tr中。有没有办法在填充完最后一个tr之后添加tr或者其他东西?

4 个答案:

答案 0 :(得分:2)

有一种方法可以插入一个完整的新行,但您必须记住隐式插入的<tbody元素,因此您必须将新行作为此元素的子元素插入。

var table = '<tr><td>' + result.table.product + '</td><td>' + result.table.code + '</td><td>' + result.table.value + '</td><td>' + result.table.time + '</td></tr>';

$('#poo > tbody').append( table );

答案 1 :(得分:2)

在将行附加到表时,是否应该添加<tr>标记?

var table = '<tr><td>' + result.table.product + '</td><td>' + result.table.code + '</td><td>' + result.table.value + '</td><td>' + result.table.time + '</td></tr>';
$('#poo tr:last').after(table);

答案 2 :(得分:0)

如果最后一个人已经填充了

,你应该跟踪
//the last tr
var $lastTr = $('#poo tr:last');
var table = '<td>' + result.table.product + '</td><td>' + result.table.code + '</td><td>' + result.table.value + '</td><td>' + result.table.time + '</td>';
//check if it has the class populated
if($lastTr.hasClass('populated')){
   //if it has it create a new row
   var tr = $('<tr/>');
   tr.append(table);
   $lastTr.after(tr);
 }else{
   //use the last row
   $lastTr.html(table);
   $lastTr.addClass('populated');
 }

答案 3 :(得分:0)

这应该有效:

function test(product, code, value, time)
{
    var table = '<tr><td>' + product + '</td><td>' + code + '</td><td>' + value + '</td><td>'+ time +  '</td></tr>';

    $('#poo > tbody').append(table);
}

test('1','1','1','1');
test('2','2','2','2');

JSFiddle输出:http://jsfiddle.net/pzewX/