关于jquery 1.9以上多次点击checkbox无法选择的bug解决

在jquery1.9之前,我们对于一个checkbox对象来进行重复选择或者取消,我们可以使用这个方法

$().attr('checked',checked);//选中
$().removeAttr('checked');//取消选中

但是在1.9版本以后我们会发现这个不好使了,具体怎么不好使了呢,我们第一次点击选中和取消是可行的,但是第二次点击选中就没有效果了,那么我们可以使用另外一个方法来解决这个问题

$().prop('checked',true);//选中
$().prop('checked',false);//取消
那么这个方法究竟是做什么的呢,为什么可以解决这个问题呢,我查了一下资料

这个方法的解释是这样的

获取匹配的元素集中第一个元素的属性(property)值或设置每一个匹配元素的一个或多个属性。

jQuery 1.6之前 .attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致。从 jQuery 1.6 开始, .prop()方法 方法返回 property 的值,.attr() 方法返回 attributes 的值。根据W3C标准,在checked属性是一个布尔属性, 这意味着,如果这个属性(attribute)是目前存在, 即使,该属性没有对应的值,或者被设置为空字符串值,或甚至是"false",相应的属性(property)为true。 这才是真正的所有布尔属性(attributes)。

然而,要记住的最重要的概念是checked特性(attribute)不是对应它checked属性(property)。特性(attribute)实际对应的是defaultChecked属性(property),而且仅用于设置复选框最初的值。checked特性(attribute)值不会因为复选框的状态而改变,而checked属性(property)会因为复选框的状态而改变。因此,  跨浏览器兼容的方法来确定一个复选框是否被选中,是使用该属性(property):

if ( elem.checked )

if ( $(elem).prop("checked") )

if ( $(elem).is(":checked") 

上面那些,看得懂就看吧,看不懂就直接用就可以了


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值