2016-08-11 4 views
4

Я добавил флажок для каждой строки в DataTables. Когда данные таблицы загружено, я связать событие изменения к каждому флажку, как это:
Привязать событие изменения к флажку в каждой строке DataTables

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 

     });}) 
Смежные вопросы