次のコードを継承しました。
// Show / Hide table rows from checkboxes
$("table.data#report-table .warning").toggle($("#warning_checkbox").is(":checked"));
$("#warning_checkbox").click(function() {
$("table.data#report-table .warning").toggle($("#warning_checkbox").is(":checked"));
$('.data_table#report-table').dataTable().fnDraw();
});
ID付きのチェックボックスがチェックされると、クラスを持つwarning_checkbox
行(実際にはtbody
要素)を表示/非表示にしますtable.data#report-table
.warning
私が見る限り'.data_table#report-table
、ページには要素がありません - だから私は何かがうまくいかないと思いました。ただし、(魔法のように?) そうです。つまり、テーブルは期待どおりに再描画され、正しい設定が保持されます。ただし、Chrome コンソールに次のエラーが表示されます。
Uncaught TypeError: Cannot read property 'oFeatures' of null
欠落している要素が原因である可能性があると思いました(しかし、それでもどのように機能しますか?)とにかく、コードを関数として書き直しました。他の場所で再利用する必要があるためです。
var checkbox_rows = function(checkbox_id, table_id, tbody_class) {
var checkbox = $('div.buttons input[id$='+checkbox_id+']');
var table = $('table.data[id$='+table_id+']');
checkbox.click(function() {
$('tbody[class$='+tbody_class+']', table).toggle(checkbox.is(':checked'));
table.fnDraw();
});
}
checkbox_rows('warning_checkbox', 'report-table', 'warning');
これも機能します(そして、私にとってはより理にかなっています)-しかし、今ではChromeコンソールで別のエラーが発生します:
Uncaught TypeError: Object [object Object] has no method 'fnDraw'
だから私の質問は、私は何が間違っているのですか? DataTable を再描画する正しい方法は何ですか?
ありがとうございました