我正在定制第三方Web应用程序,该应用程序使用Datatables通过AJAX加载一些数据。我想附加一个回调函数来检测它何时完成加载。
现在,我已阅读有关initComplete()
和fnDrawCallback
的内容,但问题在于:我见过的所有代码示例都是以下形式:
$('#tablename').dataTable( {
"initComplete": function() { }
但在我的情况下,数据表是由Web应用程序创建的,而不是由我创建的,而且我不会弄乱其源代码(除此之外,因为数据表是在许多人使用的函数中创建的页面,我需要只在其中一个中附加此回调)。我能做的是在创建表后获得对该表的引用:
var tabla=$.('#tablename').DataTable();
然后......什么?我如何附加一个回调呢?在这种情况下,正确的语法是什么?
(对不起,如果这是一个愚蠢的问题。我不会在工作中使用Javascript,当我不得不触摸它时,我的技能往往会生锈)。
答案 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以获取代码和演示。