【问题标题】:jQuery check all checkboxes in datatablejQuery检查数据表中的所有复选框
【发布时间】:2012-04-15 23:16:50
【问题描述】:

我在 index.php 中有以下 javascript 代码:

$(function () {
     $('.checkall').click(function () {
          $(this).find(':checkbox').attr('checked', this.checked);
     });
});

我通过 ajax 检索信息并使用 jQuery 数据表从该信息创建一个表,在数据表内部 head 我有一个带有 class='checkall' 的复选框。

为什么头部内的复选框不检查通过 ajax 检索到的所有其他复选框?

*我在 Firebug 中没有出错

*我检查了How to check every checkboxes in a jquery datatable?,但还是不明白... :(

【问题讨论】:

    标签: javascript jquery datatables


    【解决方案1】:
    $(function () {
         $('.checkall').click(function () {
              $(':checkbox').not(this).attr('checked', this.checked);
         });
    });
    

    如果页面上除了您的头部复选框和您要检查的复选框之外没有其他复选框,则可以使用

    【讨论】:

    • 现在有效,我直接将代码添加到元素上: onclick="$(\':checkbox\').not(this).attr(\'checked\', this.checked) ;"
    【解决方案2】:

    我认为您的问题可能与您对 $(this) 的使用有关,它可能引用了“checkall”复选框。

    find() 查找节点的后代,并且您要检查的复选框不是该复选框的后代。

    您引用的示例通过引用 datatable.fnGetNodes() 显示了正确的方法

    【讨论】:

      【解决方案3】:

      除了 GreyBeardedGeek 所说的,如果您通过 ajax 加载,如果您的 checkall 复选框是通过 ajax 调用创建并插入到 DOM 中,那么您的点击事件将不会触发。在这种情况下,您应该使用“on”(或“live”,具体取决于您的 jQuery 版本):http://api.jquery.com/live/。示例:

      $(document).on("click", ".checkall", 
        function(){ $(this).find(':checkbox').attr('checked', this.checked); });
      

      【讨论】:

        猜你喜欢
        • 2013-02-02
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        • 2017-10-08
        • 2018-09-27
        • 1970-01-01
        相关资源
        最近更新 更多