jquery checkbox反复调用attr,'checked', true/false只有第一次生效

  1. /**
  2. * 全选
  3. */
  4. function checkAll() {
  5. $("input[name=ids]").attr("checked", true);
  6. }
  7. /**
  8. * 全不选
  9. */
  10. function uncheckAll() {
  11. $("input[name=ids]").attr("checked", false);
  12. }

问题描述:

初始状态复选框没有全选,

点击全选按钮调用checkAll方法,

实现了全选,

然后点击全不选按钮,

实现了全不选,

然后再次点击全选按钮,

结果却木有全选,

再反复点击木有任何反应。

google之:

把使用prop方法代替attr方法,

  1. /**
  2. * 全选
  3. */
  4. function checkAll() {
  5. $("input[name=ids]").prop("checked", true);
  6. }

成功了。

prop()获取匹配的元素的属性值。

这个方法是jquery1.6以后出来的,用来区别之前的.attr()方法.

区别最大的一点就是:布尔型的属性,1.6以后都是用.prop()方法就好了。

这个布尔型的属性,再解释一下,是属性值只有true|false的属性。

还有种情况就是只添加属性名,不需要写属性值的就可以生效的也同样使用.prop()方法。比如:checked、disable这样的,其实它们说到底还是属于布尔型的属性。

1.添加属性名称该属性就会生效应该使用prop();

2.是有true,false两个属性使用prop();

3.其他则使用attr();