在Jquery Datatable中刷新排序缓存

我可以看到,当使用table.columns()。cache()方法首次初始化表时,Jquery数据表会生成一个排序缓存。 我的一个列包含td元素,其中包含带有类的span。 例:

...... ... ...... 

我对这个特定列的排序取决于跨度上的类。 我已经编写了一个基于文本的列排序function来执行此操作,如此处所述。

在我的表中,我以这种方式动态更新行:

 var id = //some guid var newClassToAdd = 'yellow'; var rows = table.rows().nodes(); for (var i = 0; i < rows.length; i++) { var row = $(rows[i]); var span = row.find('td span.SpanColors') if (span && span.data('id') == id) { span.removeClass('red blue yellow'); span.addClass(newClassToAdd); } } 

我遇到的问题是,当我这样做时,缓存不会更新,因此在排序时,行的显示顺序与更新它们之前的顺序相同。

在更新行之后是否有一些方法可用于更新此缓存? 我搜索过互联网,但显然这不是很多人都有的问题。 也许如果我以不同(更合法)的方式更新我的行,缓存可能会自行刷新?

完成修改单元格内容后,您可以使用row().invalidate()

 table.row(rows[i]).invalidate('dom'); 

在所有行都无效后,您可能需要调用draw()来重绘表。