删除未在jquery数据表中呈现的行

时间:2014-01-28 23:00:07

标签: jquery jquery-datatables

我有一个表格,我将复选框作为第一列,这样我就可以选择并删除我想要的所有行。

要选择行,我使用复选框单击事件来记录选定的cId(不是数据表行id)并存储在数组中。

我有一个删除按钮来删除所有选定的行。我在click事件中使用以下代码来删除所选行。

 $.each(selectedChks, function (index, cId){
                checkbox = $("#chk-"+cId);
                target_row=$(checkbox).closest("tr")[0];
                oDataTable.fnDeleteRow(target_row, null, false);
    });
    oDataTable.fnDraw();

它似乎在渲染的行上正常工作。我可以删除渲染表中的多行。

但是如果我选择了行在不同的页面中,则上面的代码失败并出现错误TypeError:s [b]未定义。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

听起来我觉得您在删除因启用分页而隐藏的任何行时遇到问题。

我设置了一个小提琴,看起来你可以删除不在当前页面中的行。不过,有办法解决这个问题。

这是fiddle of a working demo

/* Init the table */
var oTable = $('#example').dataTable( ),
    selectedChks = ['1', '4', '8', '10', '14', '19'];

/* Add a click handler for the delete row */
$('#delete').click( function() {
    //revert table
    oTable.fnDestroy();
    $.each(selectedChks, function (index, cId)
    {
        //now that we reverted the table, lets just use jQuery to remove the row
        $("#chk-"+cId).closest('tr').remove();
    });
    //initialize new table, so that row counts etc are updated
    oTable = $('#example').dataTable();
} );