检测DataTable上的页面更改

Fel*_*lix 38 jquery pagination datatables

使用DataTable,我可以订购,列表,分页,但我想检测分页何时更改,我已经看过API,但我唯一可以做的是更改页面但没有检测到此更改.

nim*_*cap 41

您可以使用fnDrawCallbackfnInfoCallback来检测更改,当单击下一个更改时,它们都会被触发.

但要注意,页面更改不是唯一可以触发这些回调的源.


duv*_*mid 33

寻呼事件以这种方式处理,

 $(document).ready(function() {

    $('#example')
        .on( 'order.dt',  function () { console.log('Order' ); } )
        .on( 'search.dt', function () {console.log('Search' ); } )
        .on( 'page.dt',   function () { console.log('Page' ); } )
        .dataTable();
} );
Run Code Online (Sandbox Code Playgroud)

在官方网站上记录,http://www.datatables.net/examples/advanced_init/dt_events.html

每当表的页长更改时,都会触发length.dt事件

$('#example').dataTable();

$('#example').on( 'length.dt', function ( e, settings, len ) {
    console.log( 'New page length: '+len );
} );
Run Code Online (Sandbox Code Playgroud)

http://datatables.net/reference/event/length

这里有更多活动

datatables.net/reference/event/


Alv*_*ker 20

我使用它了:

$('#id-of-table').on('draw.dt', function() {
    // do action here
});
Run Code Online (Sandbox Code Playgroud)


str*_*ght 16

如果您的版本大于1.8,则可以使用此命令来查看页面更改事件:

    $('#myTable').on('page', function () {...} );
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

更新:

一些评论指出使用.live()而不是.on()为它们工作.请注意,您应该尝试两种方法,看看哪种方法在您的特定环境中效果最佳!(我相信这可能与您在jQuery上的版本有关,但如果您找到其他原因请发表评论!)

  • 从数据表1.10开始,您需要命名空间 - > http://next.datatables.net/manual/events. (4认同)
  • 我认为.live()v..on()可以在jQuery/DT上处理你的版本.我一直在使用.on(),它对我有用.@ScottBeeson,您的具体问题是什么?如果您打算对我的答案进行投票,请至少提供一个证明它在您的特定情况下不起作用的示例.它似乎适用于其他人和我自己. (2认同)

小智 9

$('#tableId').on('draw.dt', function() {
    //This will get called when data table data gets redrawn to the      table.
});
Run Code Online (Sandbox Code Playgroud)


Cés*_*eón 9

就我而言,'page.dt' 事件没有解决问题。

我改用'draw.dt'事件,它有效!,一些代码:

$(document).on('draw.dt', function () {
    //Do something
});
Run Code Online (Sandbox Code Playgroud)

'Draw.dt' 事件在每次数据表页面通过搜索、排序或页面更改而改变时被触发。

/***** 附加信息 *****/

我们声明事件监听器的方式有一些不同。您可以将其分配给“文档”或“html 对象”。“文档”侦听器将始终存在于页面中,“html 对象”侦听器仅在声明时该对象存在于 DOM 中时才存在。一些代码:

//文档事件监听器

$(document).on('draw.dt', function () {
    //This will also work with objects loaded by ajax calls
});
Run Code Online (Sandbox Code Playgroud)

//HTML 对象事件监听器

$("#some-id").on('draw.dt', function () {
    //This will work with existing objects only
});
Run Code Online (Sandbox Code Playgroud)