功夫码

js设置checkbox第一次全选中,但是第二次失效解决方法

晓峰 时间:2019-08-28 18:19:12 阅读:13

js设置checkbox第一次全选中,但是第二次失效解决方法

我是这么写的

// 我是这样写的, 第一次 全选可以选中和取消,但是点击第二次全选的时候就不管事了。
$("[name='allCheck']").click(function(){
   var b=$(this).is(":checked");
   $("[name='allCheck']").attr("checked",b);
   $("[name='checkID[]']").attr("checked",b);
});

解决方法:把 attr 换成 prop即可

// 这样就可以了
$("[name='allCheck']").click(function(){
   var b=$(this).is(":checked");
   $("[name='allCheck']").attr("checked",b);
   $("[name='checkID[]']").attr("checked",b);
});

详细说明问题经过查看官方文档

后来查看jQuery官方文档发现自1.6后改版了,attr不能这么用了,property和attribute相比来说,property是一种boolean attribute,即布尔值属性,只有两种状态,如checked,selected,readonly。取这些property时,应该用prop()。

为了比较prop()和attr(),下面列出一个表格。假设有这样一个元素

<input type="checkbox" checked="checked" />,名为elem。

代码结果说明
elem.checkedtrue (Boolean)会跟着checkbox状态改变
$( elem ).prop( "checked" )true (Boolean)会跟着checkbox状态改变
elem.getAttribute( "checked" )"checked" (String)显示checkbox的初始值; 不会改变
$( elem ).attr( "checked" ) (1.6+)"checked" (String)显示checkbox的初始值; 不会改变
$( elem ).attr( "checked" ) (pre-1.6)true (Boolean)会跟着checkbox状态改变

checked attribute 不相当于checked property,而是相当于defaultChecked property,且只能用于设置checkbox的初始值。checked attribute不会跟着checkbox的状态变化,而 checked property才会。

本文来源:功夫码(gongfuma.com)

声明:本文系功夫码原创稿件,版权属[功夫码 gongfuma.com]所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:功夫码",违者将依法追究责任。

相关文章

回到顶部