2013-04-24 72 views
1

自升级到jquery 1.9后,我的脚本停止了检查/取消选中复选框的工作。jquery检查/取消选中复选框列表

我有一个主要的复选框,控制选择/检查表中的复选框列表。升级到新的jQuery版本后,只有最初点击“全部选中”复选框才会被选中。第二次单击“全选”会导致复选框取消选中,但在2次点击表格复选框停止工作后,执行“全部选中”单击。

enter image description here

脚本:

$("#itemsList .checkall").on("click", function() { 
     $(".checkbox").attr("checked", $(this).is(':checked')); 
    }); 

也试过这样:

$("#itemsList .checkall").click(function() { 
     $(".checkbox").attr("checked", $(this).is(':checked')); 
    }); 

HTML “检查所有”:

<input type="checkbox" id="checkall" name="checkall" class="checkbox checkall"> 

HTML表格复选框:

<input type="checkbox" value="1" class="checkbox"> 

这个用于在切换到jquery 1.9之前工作得很好。 什么给?

回答

2

由于jQuery 1.6中用于改变元素属性的方法prop应该用来代替attr

$("#itemsList .checkall").on("change", function() { 
    $(".checkbox").prop("checked", this.checked); 
}); 
+0

这个工程。谢谢。为什么它使用旧的jQuery版本之前工作? – ShaneKm 2013-04-24 08:33:23

+0

@ShaneKm欢迎您,因为'checked'属性映射到属性(设置后),'attr'不会更改属性。 – undefined 2013-04-24 08:34:34

2

尝试使用prop()代替自:

在jQuery 1.6的,所述.attr()方法返回未定义对于尚未被设置的属性 。要检索和更改DOM属性(如 )表单元素的选中状态,选中状态或禁用状态,请使用 .prop()方法。

$("#itemsList .checkall").on("change", function() { 
    $(".checkbox").prop("checked", this.checked); 
}); 
相关问题