请参阅我的测试用例
https://jsfiddle.net/1c3Lmace/13/
这是我的代码
$(document).ready(function() {
$('#example').DataTable( {
dom: 'C<"clear">lfrtip',
"fnPreDrawCallback": function( oSettings ) {
alert('pre');
},
"fnDrawCallback" : function() {
alert('+++++');
}
} );
} );
当您转到显示/隐藏列并单击任何列项时,您将看到每个preDrawCallBack和drawCallback事件都会触发两次。
有没有人知道为什么会这样。
我希望在数据加载之前显示加载程序并隐藏它,以及何时成功加载数据。任何帮助表示赞赏
由于
答案 0 :(得分:0)
事实上,事件会被触发两次,但只有在切换列可见性时才会被触发。
我认为在显示客户端处理的加载指示器时没有意义,列可见性变化发生得非常快。对于服务器端处理,已有processing
选项。
你可以这样做。但是我必须添加alert()
,因为列的切换速度非常快,Processing...
消息很快就会消失。
$(document).ready(function() {
$('#example').DataTable( {
dom: 'C<"clear">lfrtip',
processing: true,
drawCallback : function() {
$('.dataTables_processing', $('#example').DataTable().table().container()).hide();
}
} );
} );
$('#example').on( 'column-visibility.dt', function ( e, settings, column, state ) {
$('.dataTables_processing', $('#example').DataTable().table().container()).show();
alert('Column visibility is toggled');
} );
请参阅this jsFiddle以获取代码和演示。