我正在呈现Jquery DataTables表中的数据图表,并希望触发一个函数,以便在用户界面搜索中更改表内容时重新绘制图表,或者调用如下所示的搜索。
$('#mytable').DataTable().column(0).search('my value').draw()
在我的表上有以下代码
var table = $('#mytable').DataTable({
//my settings here
}).on( 'search.dt', function () { updateGraph( GraphData ) ; } );
代码正在工作,但在排序事件(例如排序列)上,会触发搜索,然后是order事件。是否有一种仅在表内容更改时触发更改的方法?
有关更多信息,请参见此示例。events.html
发布于 2017-07-11 15:22:10
那是个好机会!从未意识到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/
https://stackoverflow.com/questions/45037459
复制相似问题