如何检查jquery数据表中的每个复选框?

时间:2012-01-16 14:40:02

标签: javascript jquery checkbox datatable

我在第一列中有一个带复选框的表格。我使用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");
    });

4 个答案:

答案 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())
    })