将回调附加到Datatables:什么是正确的语法?

时间:2017-01-23 22:56:45

标签: javascript jquery datatables

我正在定制第三方Web应用程序,该应用程序使用Datatables通过AJAX加载一些数据。我想附加一个回调函数来检测它何时完成加载。

现在,我已阅读有关initComplete()fnDrawCallback的内容,但问题在于:我见过的所有代码示例都是以下形式:

$('#tablename').dataTable( {
  "initComplete": function() { }

但在我的情况下,数据表是由Web应用程序创建的,而不是由我创建的,而且我不会弄乱其源代码(除此之外,因为数据表是在许多人使用的函数中创建的页面,我需要只在其中一个中附加此回调)。我能做的是在创建表后获得对该表的引用:

    var tabla=$.('#tablename').DataTable();

然后......什么?我如何附加一个回调呢?在这种情况下,正确的语法是什么?

(对不起,如果这是一个愚蠢的问题。我不会在工作中使用Javascript,当我不得不触摸它时,我的技能往往会生锈)。

2 个答案:

答案 0 :(得分:1)

您可以尝试保存旧设置,使用新回调扩展设置对象,并使用以下新设置重新初始化表:

var tabla = $('#table').dataTable();

var oldOpts = tabla.fnSettings();

var newOpts = $.extend(oldOpts, {
    fnDrawCallback: function(oSettings)    {
     //Your code
    }

tabla.fnDestroy();

$('#table').dataTable(newOpts);

答案 1 :(得分:1)

您可以侦听DataTables完全初始化和加载数据时触发的init事件。

Ajax源数据

如果您正在使用Ajax源数据,则可以在 初始化

之前将处理程序附加到此事件

var table = $('#example').DataTable({
    ajax: 'https://api.myjson.com/bins/qgcu'
});

$('#example')
    .on('init.dt', function () {
        console.log( 'Table initialisation complete: '+new Date().getTime() );
    });

请参阅this example以获取代码和演示。

HTML或JavaScript源数据

如果您使用的是HTML或JavaScript源数据,则需要在 DataTables初始化之前将处理程序附加到此事件

$('#example')
    .on('init.dt', function () {
        console.log( 'Table initialisation complete: '+new Date().getTime() );
    });

var table = $('#example').DataTable();

请参阅this example以获取代码和演示。