jquery利用attr、prop方法获取、设置input的checked属性

本文介绍了在jQuery中如何正确使用prop方法获取和设置checkbox的checked属性,并对比了attr方法的效果。针对不同版本的jQuery,prop方法的表现更为一致可靠。

在jquery中应该使用prop方法来获取和设置checked属性,不应该使用attr,需要的朋友可以参考下。

1、prop方法获取、设置checked属性

<input type="checkbox" name="checkboxMain" onclick="CheckAll(this);" />
function CheckAll(obj) {
   //获取checked属性
   if ($(obj).prop("checked")) {
      //设置checked属性
      $("input[name='checkboxall']").prop("checked", true);
   } else {
      //设置checked属性
      $("input[name='checkboxall']").prop("checked",false);                                
   }
} 

当input控件checkbox设置了checked属性时,无论checked=""或
checked=“checked”,∗∗(obj).prop("checked")的结果都是true;当input控件checkbox没设置checked属性时,∗∗**(obj).prop("checked")的结果都是true; 当input控件checkbox没设置checked属性时,**(obj).prop("checked")的结果都是true;当input控件checkbox没设置checked属性时,(obj).prop(“checked”)的结果是false。
设置**∗∗("input[name=′checkboxall′]").prop("checked",true)时,checkbox会被选中;设置∗∗**("input[name='checkboxall']").prop("checked", true)时,checkbox会被选中; 设置**("input[name=checkboxall]").prop("checked",true)时,checkbox会被选中;设置**(“input[name=‘checkboxall’]”).prop(“checked”, false)时,checkbox不会被选中;

2、attr方法获取、设置checked属性

<input type="checkbox" id="selectAll" onclick="checkAll()" >全选
如果当前input中初始化未定义checked属性,则不管当前是否选中,KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲selectAll").att…**(“#selectAll”).attr(“checked”)都会返回"checked";

3、总结

在jquery中应该使用prop方法来获取和设置checked属性,不应该使用attr。
这篇文章写得较早,之后我又写了一篇文章来解释jQuery中prop和attr的区别,如果大家有需要的话请移步
http://blog.youkuaiyun.com/xiaouncle/article/details/53959496。

4、jquery版本原因

jquery-1.4.1.min.js、jquery-1.4.2.min.js可以用attr方法正确地获取或设置checkbox的checked属性,但是高版本例如:1.10.2.min.js就不能用attr方法正确地获取或设置checkbox的checked属性,在此声明:其他版本没有测试。
jquery-1.4.1.min.js文件下载地址:http://download.youkuaiyun.com/detail/xiaouncle/9585180
jquery-1.4.2.min.js文件下载地址:http://download.youkuaiyun.com/detail/xiaouncle/9585205

<think>好的,用户想知道如何使用jQuery将复选框设置为选中状态。我需要回忆一下相关的jQuery方法。 首先,我记得jQuery设置属性通常用attr()方法。比如,设置checked属性为"checked",应该像这样:$('selector').attr('checked', 'checked')。不过,用户提供的引用[1]中提到,使用attr()方法可以获取设置属性。但可能在某些情况下,比如动态操作时,prop()方法更可靠,比如在jQuery 1.6之后,推荐用prop()来处理布尔属性,如checked、selected等。不过用户给的例子中引用[1]和[2]都用了attr(),所以可能需要说明两种方法。 另外,用户提供的引用[2]中有一个例子,使用了attr('checked','checked')来设置复选框选中。这说明在jQuery UI的dialog打开事件中,他们用这种方式设置。所以用户可能需要兼容旧版本的情况,或者在某些情况下attr()仍然有效。 然后,引用[3]中的表单提交处理,可能涉及到动态生成的复选框,但这里的问题主要是设置checked状态,所以暂时不需要处理动态元素的问题。引用[4]是关于移除disabled属性,和设置checked无关,但可能说明用户对jQuery操作属性有基本了解。 现在需要确认的是,正确的方法是什么。根据jQuery的最佳实践,对于布尔属性checked,应该使用prop()方法,因为checked是一个属性/特性,而不是属性值。例如,$('#checkbox').prop('checked', true)会更直接有效,特别是在处理跨浏览器兼容性问题时。而attr()方法可能在旧版本的jQuery中有效,但在某些情况下可能无法正确反映元素的状态变化,特别是在动态操作时。 因此,回答中应该提到两种方法,但推荐使用prop()。需要比较两者的区别,并给出示例代码。比如,设置选中可以用.prop('checked', true),取消选中则用.prop('checked', false)。而使用attr()的话,则是设置属性值为'checked',或者移除该属性。 同时,用户的问题可能涉及到如何根据条件来设置复选框的状态,比如在对话框打开时根据某个值来设置。例如,在引用[2]中的例子,他们在对话框打开事件中检查某个隐藏值,然后设置复选框的checked属性。 总结,回答的结构应该是:首先介绍两种方法attrprop),解释它们的区别,推荐使用prop(),并提供示例代码。同时,可以提到在特定情况下(如动态创建的元素或表单处理)需要注意的地方,比如引用[3]中的处理方式可能需要在表单提交时处理隐藏的复选框,但用户的问题主要是设置checked状态,因此重点在propattr的使用。 最后,生成相关问题,比如如何获取复选框的状态,或者如何处理多个复选框,以及可能遇到的常见问题,比如为什么用attr有时不生效,这可以引导用户进一步了解propattr的区别。</think>要使用jQuery将复选框设置为选中状态,可以通过以下两种方法实现: ### 方法一:使用`prop()`方法(推荐) ```javascript // 设置选中状态 $('#checkboxID').prop('checked', true); // 取消选中状态 $('#checkboxID').prop('checked', false); ``` `prop()`方法直接操作DOM元素的属性,能准确反映复选框的实际状态,适用于所有jQuery版本(1.6+)[^1]。 ### 方法二:使用`attr()`方法 ```javascript // 设置选中状态 $('#checkboxID').attr('checked', 'checked'); // 取消选中状态 $('#checkboxID').removeAttr('checked'); ``` `attr()`方法修改HTML属性,但在动态交互中可能出现状态不同步的情况,适合静态页面操作[^2]。 ### 完整示例 ```html <input type="checkbox" id="agree"> <button onclick="$('#agree').prop('checked', true)">勾选协议</button> ``` ### 常见场景 1. **表单初始化时设置默认值** 在对话框打开事件中设置复选框: ```javascript $("#fModal").dialog({ open: function() { if(shouldCheck) { $(".row-form input[type='checkbox']").prop('checked', true); } } }); ``` 2. **动态表格操作** 处理表单提交时同步所有复选框状态: ```javascript $('#form').submit(function() { $('input[type="checkbox"]').each(function() { if(!$.contains(document, this) && this.checked) { $(this).clone().attr('type', 'hidden').appendTo(this.form); } }); }); ``` ### 注意事项 - 使用`prop()`时传递布尔值,而`attr()`需要字符串参数 - 对于动态生成的元素,需确保DOM加载完成后执行操作 - 批量操作建议使用类选择器,如`$('.check-group').prop('checked', true)`
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

若恰好帮到您,请随心打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值