问题:
使用$('#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");
最新评论: