22

我正在使用函数“fnDrawCallback”进行页面更改。它基本上解决了我的目的。唯一的事情是我必须在初始化 dataTable 对象时指定该函数。初始化后有什么办法可以做到吗?

例如:我这样做:

$("#tableID").dataTables({'fnDrawCallBack':functionName});

我想这样做:

var oTable = $("#tableID").dataTables();
oTable.fnDrawCallback = functionName;    // or something like this

解决方案:

oTable.aoDrawCallback.push(functionObj);
var functionObj = {
   fn: funtionName
};
4

4 回答 4

19

您可以访问 DataTables 的内部数据设置来操作绘制回调数组(aoDrawCallback,而不是内部的 fnDrawCallback - 它是一个数组,因为可以有多个回调),或者(以及我的建议)您可以添加一个“绘制”事件侦听器:

var oTable = $("#tableID").dataTables();
$(oTable).bind( 'draw', functionName );

DataTables 触发的事件记录在这里:http ://datatables.net/docs/DataTables/1.9.0/#summary_events

于 2012-03-02T18:17:04.787 回答
6

如果您的版本大于 1.8,则可以使用它来触发页面更改事件:

    $('#myTable').on('page', function () {...} );

希望这可以帮助!

于 2012-10-03T13:53:16.767 回答
1

您可能看到了这个 http://datatables.net/forums/discussion/2737/addchange-callback-after-initialization-or-else-clone-settings-to-re-build-table/p1

于 2012-03-02T16:47:35.267 回答
1

而不是两个单独的调用,只需在 .dataTable() 之前添加一个 .bind() ,例如以下在页面更改发生时运行 setMouseDown 函数(包括呈现第一页):

$('#myTable')
    .bind('page', setMouseDown())
    .dataTable( 
    { 
        bJQueryUI: true, 
        ... Other Init Stuff Here ... 
    });
于 2013-06-19T13:17:01.923 回答