我对使用jquery DataTables感到非常满意,但我发现了一种需要提高性能的情况。我正在根据数据更新单元格的类。为此,我使用渲染功能并从设置创建api实例以通过api获取单元格。有没有更好的方法来做到这一点?
{
"data": "statusText", "className": "status",
"render": function (data, type, full, meta) {
switch (type) {
case "display":
var api = new $.fn.dataTable.Api(meta.settings);
var td = api.cell({ row: meta.row, column: meta.col }).node();
switch (full.status) {
case Status.Saved:
$(td).addClass("status-saved");
break;
case Status.Sent:
$(td).addClass("status-sent");
break;
default:
$(td).addClass("status-saved");
}
return full.statusText;
case "sort":
return full.status;
default:
return full.statusText;
}
}
}
答案 0 :(得分:1)
我可以看到的一种可能性是,如果你以某种方式设法从渲染函数中获取api
和td
。因为这看起来像重型操作。
并使td
如下所示,可能会起作用。
var td = $(api.cell({ row: meta.row, column: meta.col }).node());
您还可以使用vanillaJS代替addClass
答案 1 :(得分:0)
发现rowCallback(documentation here)方法优于render方法。在rowCallback中,我们可以访问DOM行,而不必使用新的api实例并查找单元格。我仍然使用jQuery和addClass来设置类。将尝试简单的vanilla而不是jQuery来尝试进一步提高性能。正如@ shyammakwana.me
所建议的那样