2016-08-11 41 views
4

我在DataTables中的每一行都添加了一個複選框。當表中的數據被加載,我改變事件綁定到這樣每個複選框:
將更改事件綁定到每個DataTable行中的複選框

fnInitComplete: function(oSettings, json) { 

     $("input[type='checkbox']").on("change", function() { 

      // checking if any checkbox is checked 

     }); 
} 

的問題是,改變事件僅第一頁添加。如果我導航到其他頁面並單擊任何複選框,則不會觸發任何事件。它只在刷新頁面時才起作用。與Show entries一樣。什麼是處理這個問題的巧妙方法?

Table data

+0

在頁面的變化,你必須再次觸發該事件,爲實現這一目標。或者將這個函數放在加載事件上。 –

回答

3

嘗試使用委派事件:

$("#table_id").on('change',"input[type='checkbox']",function(e){ 
    //your code 
}); 

這告訴該表時,「改變」事件起源於input[type='checkbox']這是它的後代運行指定的功能。

您不需要在表格初始化中註冊此處理程序,您可以在文檔準備就緒後執行此操作。

More about delegated events

1

你可以在這裏.on('page.dt', function() { // do something})檢查the link把你的代碼,這個更多的解釋,或者你可以用下面的代碼周圍發生此事件。

$(function(){$("input[type='checkbox']").on("change", function() { 

      // checking if any checkbox is checked 

     });})