簡體   English   中英

Jquery-DataTables 捕獲搜索事件,但不捕獲來自排序的事件

[英]Jquery-DataTables catch search event but not those from ordering

我正在渲染 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 ,而不是應用順序,那么當且僅當 dataTable 中的數據實際發生更改時,我們才能觸發datachange.dt事件:

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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM