随着prop方法的引入,现在我需要知道取消选中复选框的可接受方式。是不是:
$('input').filter(':checkbox').removeAttr('checked');或
$('input').filter(':checkbox').prop('checked',false);发布于 2011-05-30 03:46:36
jQuery 3
从jQuery 3开始,removeAttr不再将相应的属性设置为false:
在jQuery 3.0之前,对布尔属性(如
checked、selected或readonly)使用.removeAttr()也会将相应的命名属性设置为false。此行为对于旧版本的Internet Explorer是必需的,但对于现代浏览器则不正确,因为该属性表示初始值,而该属性表示当前(动态)值。
在DOM元素上使用.removeAttr( "checked" )几乎总是错误的。只有当DOM稍后要被序列化为HTML字符串时,它才可能有用。在所有其他情况下,应该改用.prop( "checked", false )。
因此,在使用此版本时,只有.prop('checked',false)才是正确的方式。
原始答案(出自2011):
对于具有基础布尔属性( checked是其中之一)的属性,removeAttr会自动将基础属性设置为false。(请注意,这是jQuery 1.6.1中添加的向后兼容性“修复”之一)。
所以,这两个都行得通。但您给出的第二个示例(使用prop)是两个示例中更正确的一个。如果您的目标是取消选中该复选框,那么您确实希望影响属性,而不是属性,并且不需要通过removeAttr来实现这一点。
发布于 2014-03-03 15:01:09
使用checkbox的checked:true,false属性。
jQuery:
if($('input[type=checkbox]').is(':checked')) {
$(this).prop('checked',true);
} else {
$(this).prop('checked',false);
}发布于 2016-04-09 04:45:04
我建议同时使用prop和attr,因为我在使用Chrome时遇到了问题,我用这两个函数都解决了这个问题。
if ($(':checkbox').is(':checked')){
$(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
$(':checkbox').prop('checked', false).removeAttr('checked');
}https://stackoverflow.com/questions/6169826
复制相似问题