I use jQuery DataTable
并且有一个checkbox
工具栏上用于检索或不检索所有记录。作为状态保存 https://datatables.net/reference/option/stateSave的特征DataTable
无法正常工作,我尝试使用jquery.cookie https://github.com/carhartl/jquery-cookie/blob/master/src/jquery.cookie.js为了在重新加载后保留复选框值DataTable
(因为该复选框在每次重新加载时都会动态重绘)如下所示:
$(document).ready(function() {
$('#example').DataTable( {
//code omitted for brevity
"serverSide": true,
"ajaxSource": "/Student/GetStudents",
"fnServerData": function (sSource, aoData, fnCallback) {
/* Add some extra data to the sender */
aoData.push({ "name": "isAll", "value": $("#cbIsAll").is(":checked") });
$.getJSON(sSource, aoData, function (json) {
/* Do whatever additional processing you want on the callback, then tell DataTables */
fnCallback(json);
});
},
"fnDrawCallback": function() {
$("div.toolbar").html('<input type="checkbox" id="cbIsAll" name="demo" /> Get all records');
}
});
$(document).on('change', '#cbIsAll', function () {
var isClicked = $('#cbIsAll').is(':checked') ? true : false;
$.cookie('clicked', isClicked, { expires: 1 }); // expires in 1 day
table.ajax.reload();
$('#cbIsAll')[0].checked = ($.cookie('clicked') == "true") ? true : false;
});
});
调试代码后我发现虽然$('#cbIsAll')[0].checked
行正确执行为 true,checkbox
在此线之后失去价值。您能帮我解释一下错误在哪里吗?或者有没有更好更聪明的方法来保持checkbox
value?
没有理由使用$.cookie
在你的情况下。在复选框中change
事件,您可以简单地存储检查状态的值并使用它来设置checked
重新加载表时生成的新复选框的属性
var isChecked;
$(document).on('change', '#cbIsAll', function () {
// Store the current value
isChecked = $(this).is(':checked');
....
然后在数据表的回调函数中,设置复选框的选中状态
$('#cbIsAll').prop('checked', isChecked);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)