我可以看到,当首次使用 table.columns().cache() 初始化表时,Jquery 数据表会生成排序缓存。方法。我的一列包含 td 元素,这些元素的跨度上有类。示例:
<tr>...<td><span class="SpanColors red"></span></td>...</tr>
...
<tr>...<td><span class="SpanColors blue"></span></td>...</tr>
我对此特定列的排序取决于跨度上的类。我编写了一个基于文本的列排序函数来执行此操作,如here所述。 .
在我的表中,我以这种方式动态更新行:
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()
重绘表格。
关于jquery - 刷新 Jquery 数据表中的排序缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41187508/