为了账号安全,请及时绑定邮箱和手机立即绑定

.prop('checked',false)或.removeAttr('checked')?

/ 猿问

.prop('checked',false)或.removeAttr('checked')?

喵喔喔 2019-11-14 14:29:49

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


$('input').filter(':checkbox').removeAttr('checked');

要么


$('input').filter(':checkbox').prop('checked',false);


查看完整描述

3 回答

?
largeQ

jQuery 3


在jQuery 3,removeAttr并没有设置相应的属性false了:


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


.removeAttr( "checked" )在DOM元素上使用几乎总是一个错误。唯一有用的时间是,如果以后将DOM序列化回HTML字符串。在所有其他情况下,.prop( "checked", false )应改为使用。


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


原始答案(自2011年起):


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


因此,任何一个都可以工作...但是您提供的第二个示例(使用prop)是两者中更正确的一个。如果您的目标是取消选中该复选框,则您确实确实希望影响属性,而不是属性,因此不需removeAttr要这样做。


查看完整回答
反对 回复 2019-11-14
?
蝴蝶不菲

使用checked:复选框的true,false属性。


jQuery的:


if($('input[type=checkbox]').is(':checked')) {

    $(this).prop('checked',true);

} else {

    $(this).prop('checked',false);

}


查看完整回答
反对 回复 2019-11-14
?
幕布斯6054654

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


if ($(':checkbox').is(':checked')){

    $(':checkbox').prop('checked', true).attr('checked', 'checked');

}

else {

    $(':checkbox').prop('checked', false).removeAttr('checked');

}


查看完整回答
反对 回复 2019-11-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信