为每个TD提供自定义类以进行样式化 - Datatables和jQuery

3zz*_*zzy 51 javascript jquery html-table datatables

我使用的数据表在表中显示服务器端数据.

我不能定位和设计单个单元格(<TD>).我搜索了一下,发现它可能有:

"fnRowCallback": function( nRow, aData, iDisplayIndex ) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

...但我不太确定,因为我有一些表,而不是所有表都有相同数量的列和行.我想给所有TDs"专栏" 提供共同课程.

Luk*_*ara 48

您可以sClass在"列"定义中使用参数.例如,如果您有3列并希望为第二列和第三列传递自定义类,则可以:

"aoColumns": [
    null,
    { "sWidth": "95px", "sClass": "datatables_action" },
    { "sWidth": "45px", "sClass": "datatables_action" }
]
Run Code Online (Sandbox Code Playgroud)

您可以查看数据表文档


jma*_*eli 13

您可以使用columnDefs为每列定义类.

coffeescript中的示例:

$('table').dataTable(
  columnDefs: [
    {
      targets: -1 # targets last column, use 0 for first column
      className: 'last-column'
    }
  ]
);
Run Code Online (Sandbox Code Playgroud)

这是使用新的API 1.10+.

  • 这也将样式应用于 &lt;th&gt; 元素 (3认同)

Sas*_*M78 12

对于那些在搜索时发现此问题fnRowCallback并希望根据单元格内容添加样式而不是使用静态css类的人,使用fnRowCallbackwill会起到作用:

oTable = $('#matrix').dataTable({
  ...
  "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
    for (var i in aData)  {

      // Check if a cell contains data in the following format:
      // '[state] content'
      if (aData[i].substring(0,1)=='[') {

        // remove the state part from the content and use the given state as CSS class
        var stateName= aData[i].substring(1,aData[i].indexOf(']'));
        var content= aData[i].substring(aData[i].indexOf(']')+1);
        $('td:eq('+i+')', nRow).html(content).addClass(stateName);
      }
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

希望这可能对未来的访客有用:-)


dev*_*ate 9

以下是createdCell使用DataTables 1.10+语法进行操作的方法.这种方法的好处是您可以有条件地设置细胞样式.

"columnDefs": [
{
        "targets": [16],
        "createdCell": function(td, cellData, rowData, row, col) {
            switch(cellData) {
            case "Pending":
                $(td).addClass('pending');
                break;
            case "Rejected":
                $(td).addClass('rejected');
                break;
            case "Approved":
                $(td).addClass('approved');
                break;
            case "SAP":
                $(td).addClass('sap');
                break;
            case "Reconciled":
                $(td).addClass('reconciled');
                break;
            }
        }
    }
],
Run Code Online (Sandbox Code Playgroud)


oma*_*ari 7

如果要在回调中定位行或单个单元格:

var table = $('#order-history-table').DataTable(
    {
        "ajax": url,
        "pageLength": 20,
        "createdRow": function( row, data, dataIndex ) {

            // Add a class to the cell in the second column
            $(row).children(':nth-child(2)').addClass('text-justify');

            // Add a class to the row
            $(row).addClass('important');
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

我无法让'createdCells'参数工作,所以不得不通过行.