jquery - 刷新 Jquery 数据表中的排序缓存

标签 jquery datatables

我可以看到,当首次使用 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/

相关文章:

jquery - 在 jQuery 实例中添加和删除 tinyMCE 实例

javascript - 可点击行仅适用于数据表中的第一页

javascript - 数据表中的列排序问题

jquery - 如何在dataTable现有列中添加静态数据列

javascript - DataTables - 如何从特定行获取单元格?

Jquery多选

jQuery UI 2 日期选择器和范围选择

javascript - Jquery 只显示/隐藏但只有一个实例

jquery - 如何使用 JQuery DataTables 根据每个单元格中值的子字符串对列进行排序

javascript - 为什么我的方法没有返回对象