`

Jquery 属性attr("checked") 特性prop("checked") 全选问题

阅读更多

 

$("#chkAll").bind("change",function(){  
        $("input[type='checkbox']").attr("checked", $("#chkAll").attr("checked"));  
}); 

 

        使用上述代码最全选/取消全选时发现,$("#chkAll").attr("checked")返回的是checked或者是undefined,不是原来的true和false了,将控制元素设置上checked属性如:$("#chkAll").attr("checked"),这时发现无论如何值都为true。于是查阅http://api.jquery.com/attr/发现其中有如下描述:

 

    As of jQuery 1.6, the .attr() method returns undefined for attributes that have  
 not been set. To retrieve and change DOM properties such as the checked,   
selected, or disabled state of form elements, use the .prop() method.  

 

         也就是说,这样写在JQ1.6之前完全没问题,可是当我们升级JQ1.6到更高的版本时,我们会发现: 

$('#chkAll').attr('checked'); 返回的是checked或者是undefined,不是原来的true和false了。 
并且checked属性在页面初始化的时候已经初始化好了,不会随着状态的改变而改变。所以如果checkbox一开始是选中的,那么返回的是checked,如果一开始没被选中,则返回的是undefined。 

 

分析了其中的原因,可以这样理解: 

 

        它将“属性”与“特性”做了区别,属性指的是“name, id, type, style”等等,特性指的是“selectedIndex, tagName, nodeName, disabled, checked, selected”等等。 
JQ1.6之后,可以通过attr方法去获得属性,通过prop方法去获得特性

 

$("#chkAll").attr("checked"); //undefined 
$("#chkAll").prop("checked"); //true

$("#chkAll").bind("change",function(){
        $("input[type='checkbox']").prop("checked", $("#chkAll").prop("checked"));
});  

 

 

综合参考于:

http://zlj214.iteye.com/blog/2003343

http://www.jb51.net/article/41993.htm

 

分享到:
评论

相关推荐

    jQuery .prop()属性全选反选

    与`.attr()`方法不同,`.attr()`主要用于处理元素的特性(attributes),而`.prop()`更侧重于元素的状态或行为。例如,当用户勾选一个复选框时,`<input type="checkbox">`的`checked`属性就会被设置为`true`。 在...

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

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

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

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

    jquery操作checkbox实现全选和取消全选

    今天这样写了一个全选和取消全选的功能: 全选:$(“:checkbox”).attr(“checked”,”checked”); 取消全选:$(“:checkbox”).removeAttr(“checked”); 获取选中的:$(“:checked[checked=’checked’]”) 发现点...

    jquery通用全选并控制操作按钮

    "jquery通用全选并控制操作按钮"这个主题是关于利用jQuery实现一种常见的用户界面功能,即在表格或者列表中提供一个全选按钮,可以一键选择所有选项,同时根据选中项的数量来控制其他操作按钮的可见性或可用性。...

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

    然而,在使用jQuery进行DOM操作时,我们需要注意`checked`属性的处理方式与普通字符串属性有所不同。 ### jQuery判断复选框是否被选中 在jQuery中,我们可以使用`.is(':checked')`方法来检查复选框是否被选中,...

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

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

    jquery一句话全选/取消全选

    `.attr()` 用于获取或设置元素的属性值,`.prop()` 更适合用于布尔属性如 `checked`,而 `.change()` 可以监听复选框状态变化的事件。 在某些场景下,你可能还需要实现反选功能,即选中变为未选中,未选中变为选中...

    JQuery实现列表中复选框全选反选功能封装(推荐)

    上述代码使用了`.prop()`方法而不是`.attr()`方法来处理`checked`属性。这里存在一个关键区别,即`.prop()`方法用于获取或设置元素的属性值,特别是那些HTML的固有属性(如`checked`、`selected`和`disabled`等),...

    基于jQuery的checkbox全选问题分析

    总的来说,使用jQuery实现checkbox的全选功能需要注意DOM属性与样式之间的区别,合理使用attr()和prop()方法来处理checkbox的状态和样式问题。通过本文所述的实例分析和解决方案,开发者可以更加灵活地解决在项目...

    jquery与js实现全选功能的区别.docx

    这里使用了`prop()`方法而不是`attr()`方法,因为`prop()`能够正确地处理布尔类型的属性值,而`attr()`不能。 #### 三、纯JavaScript实现全选功能 相对于jQuery简洁的语法,纯JavaScript的实现可能会稍微复杂一些...

    jQuery实现checkbox列表的全选、反选功能

    关于`prop`和`attr`的区别,`attr`用于获取或设置HTML元素的自定义属性,而`prop`则用于处理元素的固有属性,如`checked`、`disabled`等。在处理复选框的`checked`状态时,应使用`prop`方法,因为`checked`是一个...

    jQuery实现CheckBox全选、全不选功能

    关于jQuery版本的问题,自1.6版本之后,jQuery推荐使用`.prop()`方法来处理元素的属性,特别是对于像`checked`和`disabled`这样的布尔属性。`.attr()`方法在某些情况下可能无法正确处理这些属性。因此,使用`.prop()...

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

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

    jQuery 更改checkbox的状态,无效的解决方法

    今天写页面遇到复选框动态全选或全不选...“attr”和“prop”分别是单词“attribute”和“property”的缩写,并且它们均表示”属性”的意思。 不过,在jQuery中,“attribute”和“property”却是两个不同的概念。attri

    jquery中checkbox全选失效的解决方法

    如果你使用jQuery 1.6 ,代码if ( $(elem).attr(“checked”) ),将获得一个属性(attribute) ,它不改变...使用jQuery的attr方法获取和设置复选框的”checked”属性,发现第一次全选/取消全选有效,之后就无效了,但查

    jQuery对checkbox 复选框的全选全不选反选的操作

    然而,文档提到在新版本的jQuery中,使用`attr`方法控制复选框的选中状态可能存在问题,建议使用`prop`方法或者直接用JavaScript的原生方法: ```javascript this.checked = this.checked; // js方法 ``` #### ...

    checkbox 全选反选

    对于 `checked` 属性来说,推荐使用 `prop`,因为它更准确地反映了DOM的状态。 ### 实现过程中的注意事项 - **性能优化**:当页面中有大量复选框时,频繁触发全选/全不选可能会对性能造成一定影响。可以通过减少...

Global site tag (gtag.js) - Google Analytics