JQuery AJAX добавление таблицы tr в конце таблицы - PullRequest
1 голос
/ 27 февраля 2012

У меня есть код 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 был заполнен?

Ответы [ 4 ]

2 голосов
/ 27 февраля 2012

Существует способ вставить целую новую строку, но вы должны запомнить неявно вставленный элемент <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 );
2 голосов
/ 27 февраля 2012

Не следует ли добавить тег <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);
0 голосов
/ 27 февраля 2012

Это должно работать:

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/

0 голосов
/ 27 февраля 2012

Вы должны отслеживать, заполнялся ли последний запрос

//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');
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...