Microfaster, 让我们略微加速

radio或者checkbox使用jquery的attr(checked)一直为undefined

2017-04-11 16:13:40 lvesu (2989阅读)

标签 JavaScript

问题:

使用$('#checkbox').attr('checked'); 返回的是checked或者是undefined,不是原来的true和false了,而且无论怎么切换单选按钮,checkbox的attr始终不发生改变。

原因:


在jquery1.6+之后,返回的都是checked或undefined,之前返回的true/false都是1.5-的做法哈。

附:jQuery判断checked的三种方法:
.attr('checked'): //看版本1.6+返回:"checked"或"undefined" ;1.5-返回:true或false
.prop('checked'): //16+:true/false
.is(':checked'): //所有版本:true/false//别忘记冒号哦

并且attr('checked')在页面初始化的时候已经初始化好了,不会随着状态的改变而改变,在页面初始化的时候是什么值,之后无论怎么切换单选按钮都不改变。所以如果checkbox一开始是选中的,那么返回的是checked,如果一开始没被选中,则返回的是undefined。

解决办法:

如果要使用jquery修改当前单选按钮的状态,.attr(‘checked’)是行不通的,因为无论怎么改它的值始终都不会变。这时候需要修改.prop('checked') (jquery1.6以后才支持prop的哦)

<input id="cb1" type="checkbox" checked />  
<input id="cb2" type="checkbox" checked="checked" />
//jquery1.6+:prop的4种赋值:  
 $("#cb1").prop("checked",true);//很简单就不说了哦  
 $("#cb1").prop({checked:true}); //map键值对  
 $("#cb1").prop("checked",function(){  
     return true;//函数返回true或false  
 });  
  
$("#cb1").prop("checked","checked");


北京半月雨文化科技有限公司.版权所有 京ICP备12026184号