随着prop方法的引入,现在我需要知道取消选中复选框的可接受方式.是吗:
$('input').filter(':checkbox').removeAttr('checked');
Run Code Online (Sandbox Code Playgroud)
要么
$('input').filter(':checkbox').prop('checked',false);
Run Code Online (Sandbox Code Playgroud)
Joh*_*ess 123
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执行此操作.
sur*_*wat 14
use checked:复选框的true,false属性.
jQuery的:
if($('input[type=checkbox]').is(':checked')) {
$(this).prop('checked',true);
} else {
$(this).prop('checked',false);
}
Run Code Online (Sandbox Code Playgroud)
我建议同时使用prop和attr,因为我在使用Chrome时遇到了问题,并且同时使用这两个函数解决了该问题。
if ($(':checkbox').is(':checked')){
$(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
$(':checkbox').prop('checked', false).removeAttr('checked');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
191707 次 |
| 最近记录: |