本文详细解析jQuery中checked属性的多种操作方式,对比attr与prop方法在不同版本(1.5-、1.6+)中的返回值差异,涵盖判断选中状态与赋值设置的多种写法,包括直接赋值、对象传参及函数返回,并提供完整测试代码示例。
HTML中checked属性的等效写法
HTML中checkbox的checked属性写法存在两种等效形式,仅代码长度不同。
具体HTML标记如下:
<input id="cb1" type="checkbox" checked />
<input id="cb2" type="checkbox" checked="checked" />
jQuery判断checked状态的三种方法
在jQuery中判断checkbox是否选中,主要有三种方法,其行为随版本不同有所差异:
相关代码实现如下:
.attr('checked'): 该方法在jQuery 1.6及以上版本返回字符串"checked"或"undefined";而在1.5及更早版本中返回布尔值true或false。
.prop('checked'): //16+:true/false
.is(':checked'): 适用于所有jQuery版本,返回布尔值true或false,注意选择器中需包含冒号。
jQuery设置checked属性的多种赋值方式
对于checkbox的checked属性赋值,存在多种兼容不同版本的写法:
以下赋值方式在所有jQuery版本中均有效:
具体代码示例如下:
$("#cb1").attr("checked","checked");
$("#cb1").attr("checked",true);
针对jQuery 1.6及以上版本,使用.prop()方法进行赋值有四种常见写法:
相关代码示例如下:
$("#cb1").prop("checked",true); // 基础赋值方式
$("#cb1").prop({checked:true}); // 通过键值对对象赋值
$("#cb1").prop("checked",function(){
return true; // 通过函数返回true或false
});
$("#cb1").prop("checked","checked");
更多详细信息可参考官方文档:http://api.jquery.com/prop/
完整测试代码示例
完整测试HTML代码如下:
<html>
<head>
<title>测试</title>
<style type="text/css">
</style>
<!--1.62可以修改1.42 1.52 1.7来测试-->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
//判断checked
// var a=$("#cb1").attr('checked'); //看版本1.6+返回:"checked"或"undefined" ;1.5-返回:true或false
// var b=$("#cb1").prop('checked'); //1.6+:true/false
var c=$("#cb1").is(':checked'); //所有版本:true/false
// alert(a);
// alert(b);
alert(c);
//赋值 前两个所有的jquery版本都支持 prop只有jquery1.6+支持
// $("#cb1").attr("checked","checked");//1.5-
// $("#cb1").attr("checked",true);//1.5-
// $("#cb1").prop("checked","checked");//1.6+(整理的时候把这个忘记啦)
// $("#cb1").prop("checked",true);//1.6+
// $("#cb1").prop({checked:true});//1.6+
// $("#cb1").prop("checked",function(){
// return true;//1.6+
// });
})();
</script>
</head>
<body>
<!--赋值的时候记得去掉checked-->
<input id="cb1" type="checkbox" checked />
<input id="cb2" type="checkbox" checked="checked"/>
</body>
</html>