Javascript 从DOM刷新jQuery数据表-无AJAX

Javascript 从DOM刷新jQuery数据表-无AJAX,javascript,jquery,jquery-datatables,Javascript,Jquery,Jquery Datatables,我有一个完全由服务器预先填充的HTML表;页面上没有AJAX 我有javascript代码,可以让我在这个表和另一个表(一开始是空的)之间移动行 数据集足够小,不需要Ajax分页,但足够大,DataTable中的排序/过滤功能非常有用。所以我把第一个表变成了一个数据表 问题:移动到第二个表的行在移动后仍受数据表代码的影响;第一个表上的任何新搜索、排序或筛选都会清空第二个表 因此,我希望能够修改DataTable下面的表,然后刷新它——让它重新分析DOM中存在的表,并从中重建其状态。最好不要丢失当

我有一个完全由服务器预先填充的HTML表;页面上没有AJAX

我有javascript代码,可以让我在这个表和另一个表(一开始是空的)之间移动行

数据集足够小,不需要Ajax分页,但足够大,DataTable中的排序/过滤功能非常有用。所以我把第一个表变成了一个数据表

问题:移动到第二个表的行在移动后仍受数据表代码的影响;第一个表上的任何新搜索、排序或筛选都会清空第二个表

因此,我希望能够修改DataTable下面的表,然后刷新它——让它重新分析DOM中存在的表,并从中重建其状态。最好不要丢失当前的搜索字符串、排序顺序等

我尝试使用DataTable API删除和添加行,但没有帮助-即使在删除和重画之后,对删除行内容的搜索也会使其重新出现

谢谢你的帮助

以下是原始行移动代码:

var top    = $('#top');
var bottom = $('#bottom');
$('body').on('click', 'input:checkbox', function(ev) {
  var box = $(ev.currentTarget);
  var tr = box.closest('tr');
  var table = tr.closest('table');

  var to;
  if (table.attr('id') == 'top' && checkbox.checked) {
    to = bottom;
  } else {
    to = top;
  }
  to.append(tr);
});

好的,我能够使用DataTableAPI使它工作。谢谢

深入了解行移动代码将有助于正确回答您的问题。也许您需要使用$.clone()和$.remove()来移动行-这将清除所有附加事件中的行

或者,您可以.destroy()删除数据表(请参阅),移动该行,然后再次初始化它

[编辑:] 是的,您需要使用DataTableAPI来移动行


该库似乎很好地支持它:+

请参见编辑。如果破坏数据表,我将失去搜索/排序/筛选状态。不使用Ajax有什么好处?我听说使用销毁是不可取的。虽然这显然是正确的答案,但事实并非如此。OP没有请求Ajax。