【问题标题】:How to check every checkboxes in a jquery datatable?如何检查 jquery 数据表中的每个复选框?
【发布时间】:2012-02-11 11:36:51
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery checkbox datatable


    【解决方案1】:

    您可以使用fnGetNodes 来获取您需要的所有节点,而不是使用 getElementsByClassName。

    您还应该使用 jquery.click() 事件,而不是自己定义 onClick

    【讨论】:

      【解决方案2】:

      这是我的解决方案(DataTables1.9.4):

      var nodes = $('#listContainer').DataTable().column(0).nodes();
          $(':checked', nodes).each(function (index) {
              console.log($(this).text())
          })
      

      【讨论】:

      • 代码的第一行是获取所有节点实例,即包含复选框的当前节点;所以我们可以使用 jQuery 来获取所有的复选框。
      【解决方案3】:

      对不起,我的代码错了:

      动态复选框

      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");
      } );
      

      【讨论】:

        【解决方案4】:
        $(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");
                     }
        });
        

        【讨论】:

          猜你喜欢
          • 2021-04-04
          • 2017-10-08
          • 1970-01-01
          • 2013-06-03
          • 1970-01-01
          • 1970-01-01
          • 2012-12-28
          • 1970-01-01
          • 2013-04-05
          相关资源
          最近更新 更多