随着prop方法的推出,现在我需要知道取消选中复选框的通用方法。是以下哪种方式:
$('input').filter(':checkbox').removeAttr('checked');
或者
$('input').filter(':checkbox').prop('checked',false);
随着prop方法的推出,现在我需要知道取消选中复选框的通用方法。是以下哪种方式:
$('input').filter(':checkbox').removeAttr('checked');
$('input').filter(':checkbox').prop('checked',false);
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
来实现。
removeProp()
,但不应该这么做。从文档中可以看到:“注意:不要使用[removeProp()
]来删除诸如checked、disabled或selected之类的本地属性。这将完全删除属性,并且一旦删除,就无法再次添加到元素中。而是使用.prop()
将这些属性设置为false。”removeProp
实际上只适用于自定义属性。 - John Flatness使用复选框的 checked
属性,它可以是 true 或 false。
jQuery:
if($('input[type=checkbox]').is(':checked')) {
$(this).prop('checked',true);
} else {
$(this).prop('checked',false);
}
我建议同时使用prop和attr,因为在Chrome中我曾遇到问题,而使用这两个函数我解决了它。
if ($(':checkbox').is(':checked')){
$(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
$(':checkbox').prop('checked', false).removeAttr('checked');
}
$(“input[type ='checkbox'],input[type ='radio']”).prop(“checked”,false).attr(“checked”,false).removeAttr(“checked”);
- Rod另一个实现同样效果的方法是过滤 type=checkbox 属性:
$('input[type="checkbox"]').removeAttr('checked');
或者
$('input[type="checkbox"]').prop('checked' , false);
来自jQuery API文档:
属性和特性之间的区别在某些情况下非常重要。在jQuery 1.6之前,
.attr()
方法有时会在检索某些属性时考虑属性值,这可能导致不一致的行为。从jQuery 1.6开始,.prop()
方法提供了一种显式检索属性值的方式,而.attr()
则检索属性。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<input id="checkbox" type="checkbox" onchange='act(this)'>
<input id="checkbox" type="checkbox" onchange='act(this)'>
<script>
function act(element){
if($(element). prop('checked'))
{
console.log('You have Checked it');
}else
{
console.log('You Un-Checked it');
}
}
</script>