在datatable中的表重绘上调用fnRowCallback

时间:2014-02-25 17:21:30

标签: javascript jquery datatables jquery-datatables

我正在fnRowCallback中的datatable中进行一些后期处理。但重绘表时不会调用它们。 (即,当从UI调用某些事件,如更改显示的行数时,表格会重新绘制)

      $(document).ready(function () {
            var oTable = $('#data').dataTable({
                "bJQueryUI": true,
                "bProcessing": true,
                "bServerSide": true,
                "bSort": false,
                "sAjaxSource": "query.php",
                "sPaginationType": "full_numbers",
                "aoColumns": [
                    null,
                    null,
                    null,
                ],
                "fnRowCallback": function (nRow, aData, iDisplayIndex) {
                    $(nRow).attr("id", aData[4]);
                    return nRow;
                },
               "fnDrawCallback": function( oSettings ) {
                // How do I call fnRowCallback here? 
               // losing post processing because it is not being called after a redraw
                }
    });

1 个答案:

答案 0 :(得分:2)

我认为您尝试通过$(nRow)中的jquery查找实际行是不行的。 nRow包含整行。你应该只是作为jquery选择器(第二个参数)的命名空间来限制它到这个特定的行。

像这样:

  

$( “选择器”,nRow).jqueryaction()

这对我有用:

HTML:

  <tr>
    <td>a</td>
    <td class="boldmetight">b</td>
  </tr>
  <tr>
    <td class="boldmetight">c</td>
    <td>d</td>
  </tr>.. etc

带有rowcallback的表定义,用粗体表示每个具有特定类的单元格(例如):

  var otable = $("#datatable").dataTable({
    "fnRowCallback": function(nRow, aData, iDisplayIndex) {
      $('.boldmetight', nRow).html('<b>' +  $('.boldmetight', nRow).text() + '</b>');
    }
  });

看看这个工作Plunker