jquery attr prop checkbox已有checked=checked但不显示勾选问题

最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个时候将选中的状态缓存起来,然后点击模态框中的关闭按钮,再次点击触发模态框按钮弹出模态框,这个时候问题出现了:

        checkbox标签已有checked=checked但是不显示勾选,查看图片:

        网上也查过有解决方案,就是将   $("...").attr("checked", true)改为$("...").prop("checked", true),问题解决,但是,问题是解决了,那么原因是出现在哪里呢?

        首先来了解下 jquey中的 attr()函数和prop()函数,attr()是处理 attribute的值的,而prop()是处理 property 的值的 ,jQuery 1.6之前 ,.attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致。从 jquery 1.6 开始, .prop()方法 方法返回 property 的值,而 .attr() 方法返回 attributes 的值,那么归根结底,就是在处理 attribute 和 property。

        很多attribute节点有一个相应的property属性,因而attribute和property很容易被混淆在一起,如某个div元素中的id和class既是attribute也有property,不管哪种方式都可以访问和修改,但是对于自定义的attribute节点,或者自定义property,两者就没有关系了(但是在IE6-7中,两者还是一样的,好奇葩的,但愿我们都能早日抛弃IE8以下的),需要注意的是,对于checked特性(attribute)不是对应它checked属性(property),attribute实际对应的是defaultChecked属性,而且仅用于设置复选框最初的值,checked的attribute不会因为复选框的状态而改变,而checked的property会因为复选框的状态而改变,所以在.attr()函数中,就算设置成了.attr("checked", true),也只是用来存储默认或者选中属性的默认值,却并不改变该复选框被选中和选中,这就是为什么   checkbox标签已有checked=checked但是不显示勾选 的原因所在

checkboxchecked属性用于确定是否选中了该复选框。在给checkbox元素设置checked属性为true时,即可将其选中。通常可以使用jQuery来选中checkbox,其中一种方法是使用prop()方法来设置checked属性为true。例如,可以使用以下代码选中第0个和第1个checkbox: $("#chk1").find("input:checkbox").slice(0,2).prop("checked", true); 另外,还可以使用attr()方法将checked属性设置为"checked"来选中checkbox元素。例如,可以使用以下代码选中所有type为checkbox的元素: $("input[type='checkbox']").attr("checked", "checked"); 如果想获取选中的多个checkbox元素的值,可以使用each()方法遍历所有的checkbox元素,然后判断其checked属性是否为true,如果为true就可以获取其值。例如,可以使用以下代码获取id为chk1的容器中选中的checkbox的值: $("#chk1").find("input:checkbox").each(function(){ if($(this).prop('checked') == true){ console.log($(this).val()); } });<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [checkboxchecked属性总结](https://blog.csdn.net/chaoyue1861/article/details/83752870)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值