【问题标题】:jquery datatables remove row by indexjquery数据表按索引删除行
【发布时间】:2017-09-21 20:11:32
【问题描述】:

我知道这个问题很受欢迎,但所有答案都针对选定的行。我正在尝试删除/删除未选中的行。我有一个要从中删除行的表的变量,并且我有要删除的行的索引。

这些是获取表或行句柄的各种方法:

var table = $('#tableName');
var rows = $('#tableName tbody tr').toArray();
var oTable = $('#tableName').dataTable();

我知道如何在选定的行上使用row.remove() 方法。

var jThisButton = $(this);
var jRow = jThisButton.parents("tr");
jRow.remove();

但是我的行没有被选中;相反,我有一个索引。假设我的索引是 2。使用类似上面的代码,也许我可以按索引获取行并像这样删除它:

var jRow = table.find('tr').eq(index);
jRow.remove();

除非那不起作用。该代码将我要删除的行移动到最后一行,然后显示搜索栏。

您可以在下图中看到我在表格中有 4 行。

如何删除存在于索引 2 的 tr?

我无法在任何地方找到这个问题的答案。请帮忙!

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    试试这个:

    oTable.row(index).remove().draw();
    

    从 DOM 中删除 tr 不会将其从 DataTable 中删除。 如果再次绘制 DataTable,删除的行将返回查看。

    remove() 将从 DataTable 中删除该行,调用 draw() 将更新 DataTable。这也会更新行数信息。

    更新

    对于 DataTable 1.9.4,下面的代码将起作用

    oTable.fnDeleteRow(index);

    draw() 不是必需的,因为 DataTable 在fnDeleteRow() 之后刷新

    【讨论】:

    • 我使用的是旧版数据表。我之前尝试过 .draw() ,但它没有被识别为函数。我用你的代码又试了一次,我在 oTable.row is not a function 上得到了同样的错误。
    • 我在这个答案stackoverflow.com/a/14943639/1735836 中查找了旧版 draw() 方法并找到了 .fnDraw(),它刷新了表格并重新添加了行。
    • 能否请您指定您使用的DT版本?
    • DataTables-1.9.4
    • 这就像 Sushant 的回答一样,但表格仍然像我的问题中的图像一样显示。如何让表格正确显示?
    【解决方案2】:

    fnDeleteRow 是正确使用的函数,但它并不像您想象的那么简单:

    $('#delete').click(function(e){
        var row = oTable.find('tr').eq(3);
        oTable.fnDeleteRow(row[0]);
    })
    

    请参阅here 以获取工作版本。

    【讨论】:

    • 这确实删除了行,但是在删除行的过程中,搜索栏和显示条目数的底部部分(我不知道您所说的页眉和页脚数据表)被显示。所以现在我可以删除该行,如何从视图中隐藏它?也许我应该问一个新问题。
    • 我猜这些控件显示的原因是您在页面加载时使用 jquery 隐藏了它们,而不是使用 API?
    • 是的。有什么补救措施吗?我一直在从两个不同的角度来解决这个问题。尝试删除一行并构建一个新数组以清除并重新加载表。谁会想到这会如此困难? :-(
    • 在数据表初始化中使用sDom 选项来指定要显示的数据表元素,因此如果要隐藏过滤器输入和分页控件 - "sDom" : "ltr"。如果你发布你的数据表初始化代码,我可以修改它以适应。
    • 我会尽快发布。谢谢。
    【解决方案3】:

    试试这个:

    $("tr").eq(1).remove();
    

    【讨论】:

    • 删除了该行,但搜索栏显示仍然不稳定,并且在表格底部它仍然显示“显示 4 个条目中的 1 到 4 个”,即使现在只有 3 行。
    • 第二部分:var rowCount = $('#tablename tr').length;它会为您获取活动条目。
    • 我不想看到活动条目。如何让表格正确显示?
    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    相关资源
    最近更新 更多