我正在尝试使用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 documentation(example)中,您可以看到作者显示了如何使用此选项将类添加到某些行,这似乎与您要执行的操作最接近。
据我所知,您想使每个单元格都有一个与该单元格中的文本相同的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/