使用jQuery v1.10.2获取checkbox的状态时,用.attr("checked")时输出总是为undefined.郁闷了,这难道是个bug?!
查看jQuery API的文档,发现:
As of jQuery 1.6, the .attr()
method returns undefined
for attributes that have not
been set. In addition, .attr()
should not be used on
plain objects, arrays, the window, or the document. To retrieve and
change DOM properties, use the .prop() method.
The difference between attributes and properties can be
important in specific situations. Before jQuery
1.6, the .attr()
method sometimes took
property values into account when retrieving some attributes, which
could cause inconsistent behavior. As of jQuery
1.6, the .prop()
method provides a way to
explicitly retrieve property values, while .attr()
retrieves attributes.
也就说:v1.6以后attr(‘checked’)就返回checked和undefined,v1.6以前返回true和false,v1.6以后可以使用is(‘:checked’)或者.prop(‘checked’)来返回true和false
总结:
(1)获取checked的方法
.attr('checked'):
.prop('checked'): //1.6+:true/false
.is(':checked'):
(2)checked赋值
所有的jquery版本都可以这样赋值:
.attr("checked","checked");
.attr("checked",true);
jquery1.6以上版本的:
.prop("checked",true);
.prop("checked","checked");
.prop({checked:true});
.prop("checked",function(){
return true;
});
(3)note:jquery1.6以上才存在prop();