我正在尝试使用CSS根据其值将DataTable应用于每个drawCallback()单元格。CSS被应用于少数几个单元格,而不是全部。这是我的问题的JsFiddle。有没有人遇到此问题并找到解决方案或对此有任何想法,请提出建议!

  "drawCallback": function( settings ) {
        var api = this.api();
        var visibleRows=api.rows( {page:'current'} ).data();
        if(visibleRows.length >= 1){
        for(var j=1;j<visibleRows[visibleRows.length -1].length;j++){
          $("td:eq("+j+")", settings.nTBody.childNodes[visibleRows.length -1]).addClass(visibleRows[visibleRows.length -1][j]);
        }
        }
    },

最佳答案

就像@charlietfl所说的那样,您实际上并不想使用drawCallback格式化行,而使用createdRow(rowCallback)进行格式化可能会更好。

drawCallback在每个draw事件上调用,这意味着它实际上是用于更新刚刚添加的行或使用刚刚更新的数据。

另一方面,createdRow旨在在创建行时立即调用,这似乎是您真正想要的。在this documentationexample)中,您可以看到作者显示了如何使用此选项将类添加到某些行,这似乎与您要执行的操作最接近。

据我所知,您想使每个单元格都有一个与该单元格中的文本相同的CSS类(如果我错了,请纠正我)。使用createdRow进行此操作最简单的方法如下:

"createdRow": function ( row, data, index ) {
    for(var i = 0;i<data.length;i++){
        $('td', row).eq(i).addClass(data[i]);
        //The above line assumes that you want to add a CSS class named "red" to a
        //field that has the text "red" in it, if not, you can change the logic
    }
}


只需将其包含在.DataTables()调用的初始化选项中即可。

我必须对将哪些类添加到哪些列中的确切逻辑做一些假设,但是如果它们是正确的,则应该在每个与该字段中的文本命名相同的字段中添加一个类。

关于javascript - DataTable drawCallback如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38361622/

10-11 21:43