datatables ページを跨いでチェックボックスを操作する

  • datatablesで、ページを跨いでチェックボックスを操作する処理。
  • サーバー側ではなく画面側でページングしている場合。
var table=null;

    table = $("#result-table").DataTable({
  // 色々設定
  〜〜
        // 描画後にイベントを付与
        drawCallback: addCheckEvent
    });


var addCheckEvent = function () {

    // チェックボックス全体操作
        var checkboxs = table.$('.check_line') // $('.check_line')のみで指定すると1ページ分しか取得できない
        $(document).on('change', '#check_all', function(){
            for (var i = 0; i < checkboxs.length; i++) {
                table.$('.check_line').prop('checked', $('#check_all).prop('checked'));
            }
        });

    // 一つでもチェックが外れていたら全選択チェックを外す
    for (var checkbox of checkboxs) {
        checkbox.onclick = function () {
            for (var i = 0; i < checkboxs.length; i++) {
                if (checkboxs[i].checked == false) {
                    $('#check_all'').prop('checked', false);
                } else {
                    if (table.$('.check_line').filter(':checked').length == checkboxs.length) {
                        $('#check_all'').prop('checked', true);
                    }
                }
            }
        };
    };
}