`

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

阅读更多

转自:http://www.iteye.com/topic/1141320

 

 

最近在做项目的过程中碰到了这样的一个问题:在使用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但是不显示勾选 的原因所在。

分享到:
评论

相关推荐

    Jquery 获取checkbox的checked问题

    在jQuery中,获取复选框(checkbox)的`checked`状态是一个常见的操作,但往往存在一些误解。在讨论这个问题之前,我们先明确HTML中的`checked`属性和jQuery中获取该属性值的区别。 在HTML中,当一个复选框被选中时...

    jquery attr方法获取input的checked属性问题

    问题:经常使用jQuery插件的attr方法获取checked属性值,获取的值的大小为未定义,此时可以用prop方法获取其真实值,下面介绍这两种方法的区别: 1.通过prop方法获取checked属性,获取的checked返回值为boolean,...

    jquery input checkbox 联动

    parents.find('input[type="checkbox"]').prop('checked', checkedState); children.prop('checked', checkedState); }); } // 在页面加载完成后调用此函数 $(document).ready(setupCheckboxLinkage); ``` 通过...

    浅析jquery与checkbox的checked属性的问题

    jQuery与checkbox的checked属性之间的关系是前端开发者经常需要处理的问题。在Web开发过程中,复选框(checkbox)是用来让用户选择多个选项的常用表单控件,而jQuery是一个广泛使用的JavaScript库,它简化了HTML文档...

    jQuery checkbox选中问题之prop与attr注意点分析

    总之,在使用jQuery处理checkbox元素的选中问题时,理解并正确使用prop和attr方法非常关键。特别是在涉及到跨浏览器兼容性问题时,更应当注意使用prop方法来替代attr方法。同时,开发者还应熟悉checkbox的HTML属性和...

    jQuery如何判断checkbox(复选框)是否被选中

    这里使用了`.attr("checked")`,但在实际应用中推荐使用`.prop('checked');`。 - **获取所有选中的值**:遍历所有带有`checked`属性的复选框,收集它们的`value`属性值。这里使用了`$("[name='checkbox'][checked]...

    jquery操作Radio、Checkbox、Select Demo

    Checkbox则允许用户多选,我们同样可以使用`.prop()`或`.attr()`来检查或取消选中,使用`.is()`检查是否已被选中。 1. **设置Checkbox选中状态**: ```javascript $('input[type="checkbox"]').prop('checked', ...

    jQuery .prop()属性全选反选

    例如,当用户勾选一个复选框时,`<input type="checkbox">`的`checked`属性就会被设置为`true`。 在jQuery中,实现表格全选与反选功能通常涉及`.prop('checked', value)`的使用。这里,`value`可以是`true`或`false...

    checkbox多项选中及取消选中

    本教程将深入探讨如何实现 `checkbox` 的多项选中与取消选中的功能,以及相关的 `attr` 和 `prop` 属性在其中的作用。 1. **Checkbox基本概念**: `checkbox` 是HTML中的一个输入类型,其标签为 `<input type=...

    jQuery1.9.1针对checkbox的调整方法(prop)

    在jquery 1.8.x中的版本,我们对于checkbox的选中与不选中操作如下: 判断是否选中 代码如下:$(‘#checkbox’).prop(‘checked’) 设置选中与不选中状态: 代码如下:$(‘#checkbox’).attr(‘checked’,true)$(‘#...

    jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法

    在使用jQuery操作网页上的复选框checkbox时,我们经常遇到一个常见问题:当我们尝试通过代码设置checkbox的checked属性为true或false时,只在第一次调用时有效。之后无论我们如何修改,checkbox的状态都不会改变,这...

    解决checkbox的attr(checked)一直为undefined问题

    总结来说,当遇到`checkbox.attr("checked")`返回`undefined`的问题时,应该使用`checkbox.prop("checked")`来获取或设置复选框的实时状态。这在实现全选、反选等涉及复选框状态同步的场景中尤为重要。记住这个技巧...

    jquery无法设置checkbox选中即没有变成选中状态

    $(“input”).attr(“checked”,”checked”) 设置以后checkbox并没有变成选中状态,用chrome调试看了一下,checkbox中确实有checked属性,而且,值为checked,但是页面显示仍然为未选中状态 代码如下: $(“input”)...

    jquery checkbox无法用attr()二次勾选问题的解决方法

    在jQuery中,处理复选框(checkbox)的状态时,可能会遇到一个问题,即使用`attr()`方法无法正确地进行二次勾选。这个问题在描述中已经提到,当尝试通过`attr()`方法改变checkbox的选中状态时,特别是在反复切换的...

    jquery操作checkbox火狐下第二次无法勾选的解决方法

    而在1.6版本之后,jQuery认为attr()方法在处理DOM属性时可能会有意外的表现,因此推荐使用prop()方法来处理诸如checked、disabled这样的DOM属性。prop()方法被设计来处理元素的属性,这些属性在元素上可能是true或...

    Jquery attr("checked") 返回checked或undefined 获取选中失效

    在jQuery中,`attr()` 和 `prop()` 方法都是用来获取或设置HTML元素的属性值,但它们之间存在一些关键的区别,特别是在处理某些特定属性,如`checked`时。标题和描述提到的问题在于从jQuery 1.6版本开始,`attr('...

    使用prop解决一个checkbox选中后再次选中失效的问题

    在全不选按钮的点击事件中,我们使用了`$(":checkbox").attr("checked",false)`来设置所有checkbox的checked属性为false,从而实现了全不选。在反选按钮的点击事件中,我们使用了if语句来判断checkbox是否被选中,...

Global site tag (gtag.js) - Google Analytics