首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是.prop('checked',false)还是.removeAttr('checked')?

是.prop('checked',false)还是.removeAttr('checked')?
EN

Stack Overflow用户
提问于 2011-05-30 03:11:51
回答 5查看 246.1K关注 0票数 126

随着prop方法的引入,现在我需要知道取消选中复选框的可接受方式。是不是:

代码语言:javascript
复制
$('input').filter(':checkbox').removeAttr('checked');

代码语言:javascript
复制
$('input').filter(':checkbox').prop('checked',false);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-30 03:46:36

jQuery 3

从jQuery 3开始,removeAttr不再将相应的属性设置为false

在jQuery 3.0之前,对布尔属性(如checkedselectedreadonly )使用.removeAttr()也会将相应的命名属性设置为false。此行为对于旧版本的Internet Explorer是必需的,但对于现代浏览器则不正确,因为该属性表示初始值,而该属性表示当前(动态)值。

在DOM元素上使用.removeAttr( "checked" )几乎总是错误的。只有当DOM稍后要被序列化为HTML字符串时,它才可能有用。在所有其他情况下,应该改用.prop( "checked", false )

Changelog

因此,在使用此版本时,只有.prop('checked',false)才是正确的方式。

原始答案(出自2011):

对于具有基础布尔属性( checked是其中之一)的属性,removeAttr会自动将基础属性设置为false。(请注意,这是jQuery 1.6.1中添加的向后兼容性“修复”之一)。

所以,这两个都行得通。但您给出的第二个示例(使用prop)是两个示例中更正确的一个。如果您的目标是取消选中该复选框,那么您确实希望影响属性,而不是属性,并且不需要通过removeAttr来实现这一点。

票数 140
EN

Stack Overflow用户

发布于 2014-03-03 15:01:09

使用checkbox的checked:true,false属性。

jQuery:

代码语言:javascript
复制
if($('input[type=checkbox]').is(':checked')) {
    $(this).prop('checked',true);
} else {
    $(this).prop('checked',false);
}
票数 22
EN

Stack Overflow用户

发布于 2016-04-09 04:45:04

我建议同时使用prop和attr,因为我在使用Chrome时遇到了问题,我用这两个函数都解决了这个问题。

代码语言:javascript
复制
if ($(':checkbox').is(':checked')){
    $(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
    $(':checkbox').prop('checked', false).removeAttr('checked');
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6169826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档