10

iCheck は、最初のページでのみデータテーブルを処理します。他のページに移動すると、チェックボックスが表示されますが、iCheck が適用されていません。このコードは役立ちますが、100% は機能しません。

function turn_on_icheck(checkboxClass)
{
    $('input[type=checkbox]').iCheck({
        checkboxClass: checkboxClass
    });
}
$('.data-table').on('page', function() {
    turn_on_icheck();
});

2 番目のページに移動すると、すべて問題なく表示されますが、以前にアクセスしたページに戻ると、チェックボックスがありません。iCheck のインスタンスが既に実行されているため、エラーが発生するように思えます。実行中かどうかを確認する方法はありますか?

4

5 に答える 5

13

asp.net グリッドでも同じ問題が発生しました。ページングや表示メニューにも役立つon draw.dt イベントを使用してください。

$('.data-table').on('draw.dt', function () {
    turn_on_icheck();
});
于 2014-11-18T06:32:24.207 に答える
1

データテーブルが値を更新すると、新しい入力がレンダリングされ、入力は icheck 関数を再度適用する必要があります。

$(document).ajaxComplete(function() {
    $('input[type=checkbox]').iCheck({
        checkboxClass: checkboxClass
    });
});
于 2015-02-12T14:45:02.127 に答える
0

これが私がそれを解決した方法です... DataTable関数を呼び出す前に、icheckが完了するまでしばらく時間を与える必要があります... JQUERYのwhen関数を使用します

function Typer(callback)
{    
    if ($("input.flat")[0]) 
    {
        $('input.flat').iCheck({
            checkboxClass: 'icheckbox_flat-green',
            radioClass: 'iradio_flat-green'
        });
    }
}


function enableDataTableMain()
    {
    var table = $('#tableWithData').DataTable({
     "aoColumnDefs": [
        {
            'bSortable': false,
            'aTargets': [0]
        } //disables sorting for column one
    ],
    "tableTools": {
        "sSwfPath": "swf/copy_csv_xls_pdf.swf"
    }});                    
    var tt = new $.fn.dataTable.TableTools( table );
    $( tt.fnContainer() ).insertBefore('div.functionDiv');
}


    $(document).ready(function() {
    $.when( Typer() ).done(function() {
       enableDataTableMain();
    });
});
于 2016-08-24T09:18:29.977 に答える