我有以下表格代码:
<tbody>
<tr data-id='1' id='item-1'>
<td>30-01-2014</td>
</tr>
<tr data-id='19' id='item-2'>
<td>30-01-2014</td>
</tr>
<tr data-id='5' id='item-3'>
<td>30-01-2014</td>
</tr>
<tr data-id='39' id='item-4'>
<td>30-01-2014</td>
</tr>
</tbody>
和jQuery:
$('table tbody').sortable({
axis: 'y',
update: function (event, ui) {
var data = $(this).sortable('serialize');
$.ajax({
data: data,
type: 'POST',
url: 'updatePagesOrder.php'
});
}
});
var i = 1;
$('table > tbody > tr').each(function () {
$('tr').attr('id', 'item-' + i);
i++;
});
我想要做的是,在执行sortable
函数之后,项目的id将再次从1到4进行排序。我试过上面的代码,但它没有用。
希望得到帮助......谢谢!
我可能不太了解您的问题,但我相信您希望每当表行重新排序时都会更新ID?
如果是这种情况,那么我认为问题在于您在初始化可排序插件后更新了ID,但是当用户重新排序表行时,将覆盖此更改。您应该做的是更新更新功能中的ID。如果要在序列化后更新ID,请在调用序列化后将调用置于updateRowIDs()。
$('table tbody').sortable({
axis: 'y',
update: function (event, ui) {
updateRowIDs();
var data = $(this).sortable('serialize');
$.ajax({
data: data,
type: 'POST',
url: 'updatePagesOrder.php'
});
}
});
function updateRowIDs()
{
var i = 1;
$('table > tbody > tr').each(function() {
this.id = 'item-' + i;
i++;
});
}
而不是在$('tr')
循环内的.each()
,使用$(this)
:
$('table > tbody tr').each(function () {
$(this).attr('id', 'item-' + i);
i++;
});