Jquery-DataTables 捕获搜索事件,但不捕获排序事件



我正在渲染 Jquery DataTables 表中的数据图,并希望触发一个函数,以便在 UI 搜索的表内容发生变化时重新绘制图形或调用如下所示的搜索

$('#mytable').DataTable().column(0).search('my value').draw()

在我的桌子上,我有以下代码

var table = $('#mytable').DataTable({
//my settings here
}).on( 'search.dt',   function () { updateGraph( GraphData ) ; } );

代码正常工作,但在排序事件(例如对列进行排序(上,触发搜索后跟订单事件。有没有办法仅在表内容更改时触发更改?

有关详细信息,请参阅此示例。 https://datatables.net/examples/advanced_init/dt_events.html

这是一个很好的收获!从未意识到即使在简单的排序中也会触发search.dt事件。实际上是一个特殊的问题。也许其他人会想出更好的主意,但我认为保留当前行的"快照"并在触发search.dt时将它们与行进行比较可以解决问题。如果snapshot基于表行的默认顺序,或index,而不是基于应用的排序,那么我们可以触发datachange.dt事件当且仅当数据在 dataTable 中实际更改时:

var table = $('#example').DataTable({
snapshot: null
})
.on('search.dt', function() {
var snapshot = table
.rows({ search: 'applied', order: 'index'})
.data()
.toArray()
.toString();
var currentSnapshot = table.settings().init().snapshot;
if (currentSnapshot != snapshot) {
table.settings().init().snapshot = snapshot;
if (currentSnapshot != null) $('#example').trigger('datachange.dt')
}
})
.on('datachange.dt', function() {
alert('data has changed')
//updateGraph( GraphData )
})

演示 ->http://jsfiddle.net/hftuew5u/

相关内容

  • 没有找到相关文章