我在第一列中有一个带复选框的表格。我使用jQuery DataTable插件显示我的表。
我制作了2个链接来选择/取消选中每个复选框。这是选择全部的一个:
<a href="" name="CheckAll" onClick="checkAll(document.email_list_form_inviter.getElementsByClassName(\'email_checkbox\'), event)" >Select all</a>
和javascript:
function checkAll(field, event) {
event.preventDefault();
for (i = 0; i < field.length; i++)
field[i].checked = true ;
return false;
}
但是数据表启用分页,我的功能只选择可见的复选框,而不选择其他页面的复选框。如何选择数据表中的每个复选框?
解决方案:
好的我用fnGetNodes做了这个,谢谢amccausl!
$("a[name='CheckAll']").click(function(event) {
event.preventDefault();
var nodes = datatable.fnGetNodes( );
$('.email_checkbox', nodes).attr("checked", "checked");
});
答案 0 :(得分:1)
您可以使用fnGetNodes来获取所需的所有节点,而不是getElementsByClassName。
您还应该使用jquery.click()事件而不是自己定义onClick
答案 1 :(得分:0)
对不起,我的代码错了:
动态复选框
return '<input type="checkbox" id="email_checkbox" name="email_checkbox" />';
链接
<a href="" name="CheckAll" id="CheckAll">seleccionar todos</a>
名称表:
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example" width="100%">
和代码
$(document).ready(function() {
$("a[name='CheckAll']").click(function(event) {
event.preventDefault();
var nodes = $('#example').fnGetNodes( );
$('.email_checkbox', nodes).attr("checked", "checked");
} );
答案 2 :(得分:0)
$(document).ready(function() {
$(".checkall").click(function(event) {
event.preventDefault();
var oTable = $('#example').dataTable();
var nNodes = oTable.fnGetNodes();
$email_box=$('.email_checkbox',nNodes);
if($email_box.attr("checked")=="checked"){
$email_box.removeAttr("checked");
$(".checkall").text("Check all");
}
else{
$email_box.attr("checked", "checked");
$(".checkall").text("Uncheck all");
}
});
答案 3 :(得分:0)
这是我的解决方案(DataTables1.9.4):
var nodes = $('#listContainer').DataTable().column(0).nodes();
$(':checked', nodes).each(function (index) {
console.log($(this).text())
})