修改单元格类时改进DataTable性能

时间:2017-11-13 12:42:24

标签: javascript jquery performance datatables styling

我对使用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;
             }
        }
    }

2 个答案:

答案 0 :(得分:1)

我可以看到的一种可能性是,如果你以某种方式设法从渲染函数中获取apitd。因为这看起来像重型操作。

并使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

所建议的那样