0

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

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

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

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

*我在 Firebug 中没有错误

*我检查了如何检查 jquery 数据表中的每个复选框?但还是不明白... :(

4

3 回答 3

1

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

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

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

于 2012-04-15T15:02:56.643 回答
1
$(function () {
     $('.checkall').click(function () {
          $(':checkbox').not(this).attr('checked', this.checked);
     });
});

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

于 2012-04-15T15:10:20.583 回答
0

除了 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); });
于 2012-04-15T15:16:50.890 回答