jquery - 数据表 jquery fnAddData

标签 jquery datatables

设法将其一起拉出来,在两个数据表之间来回移动行,但在我找不到的地方有一个小故障。核心功能就是这个。

    stockTable.on('click', '.toggle' ,function() {
    var $row = $(this).closest('tr');
    var addRow = stockTable.fnGetData($(this).closest('tr')[0]);
    stockTable.fnDeleteRow($row.index());
    catalogTable.fnAddData(addRow);
});

问题是“有时”当重复单击按钮时,它会发送错误的行!

请看一下并确保您随机且重复地单击按钮。 http://jsfiddle.net/NpT26/3/

谢谢!

最佳答案

有趣,我上周刚刚为我自己的项目做了这个。以下是我注意到的似乎不对的地方:

  • 您多次选择该行。只做一次。
  • 您将行索引传递给.fnDeleteRow()。相反,传递行本身。该方法接受其中之一,并且您已经拥有对该行的引用。
  • 首先删除该行,然后将数据添加到另一个表中。首先将数据添加到另一个表中,然后删除该行。我不能明确地说这会导致任何问题,但如果您先删除该行,似乎更有可能遇到某种竞争条件。

进行这些更改后您会得到:

stockTable.on('click', '.toggle', function () {
    var row = $(this).closest('tr')[0];
    var addRow = stockTable.fnGetData(row);
    catalogTable.fnAddData(addRow);
    stockTable.fnDeleteRow(row);
});

jsfiddle.net/NpT26/13

<小时/>

您可以通过使用同一对象初始化两个表并使用点击处理程序的通用版本来减少代码的冗余:

jsfiddle.net/NpT26/14

关于jquery - 数据表 jquery fnAddData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20056055/

相关文章:

javascript - 在 ios 8 应用程序扩展 javascript 文件中使用 jQuery

javascript - 为什么这个 ('resize' ) 事件是在加载时触发的,而不是在窗口调整大小时触发的?

php - 在 PHP 中访问 JSON 数组并发送到 MySQL SELECT

javascript - 删除类后的事件委托(delegate)

javascript - 如何重新加载现有dataTable()中的数据?

轮播脚本中的 Jquery 函数定义

jquery - jQuery DataTables 如何应用于 MVC4 中的 AJAX 渲染部分 View ?

javascript - 带有ajax响应的数据表

jquery - 使用 jQuery DataTables Editable 编辑多个值

jquery 数据表静态行号