使用jQuery重新编号表行的id

问题描述 投票:1回答:3

我有以下表格代码:

<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进行排序。我试过上面的代码,但它没有用。

希望得到帮助......谢谢!

jquery html-table jquery-ui-sortable attr
3个回答
3
投票

没有必要声明i你已经在使用.each()所以

试试这个

$('table > tbody tr').each(function (i) {
     $(this).attr('id', 'item-' + (i + 1)); // use $(this) as a reference to current tr object
});

使用(i+1)因为索引从0开始

Demo


0
投票

我可能不太了解您的问题,但我相信您希望每当表行重新排序时都会更新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++;
    });
}

0
投票

而不是在$('tr')循环内的.each(),使用$(this)

$('table > tbody tr').each(function () {
    $(this).attr('id', 'item-' + i);
    i++;
});
© www.soinside.com 2019 - 2024. All rights reserved.