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

时间:2011-05-29 19:11:51

标签: jquery

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

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

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

5 个答案:

答案 0 :(得分:110)

jQuery 3

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

  

在jQuery 3.0之前,对.removeAttr()checkedselected这样的布尔属性使用readonly也会将相应的命名属性设置为{{1} }。此行为是古老版本的Internet Explorer所必需的,但对于现代浏览器而言是不正确的,因为该属性表示初始值,属性表示当前(动态)值。

     

在DOM元素上使用false几乎总是错误的。唯一可能有用的是DOM稍后将被序列化回HTML字符串。在所有其他情况下,应使用.removeAttr( "checked" )代替。

Changelog

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


原始答案(自2011年起):

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

所以,要么会工作......但你给出的第二个例子(使用false)是更正确的两个。如果您的目标是取消选中该复选框,那么您确实希望影响属性,而不是属性,并且无需通过prop来执行此操作。

答案 1 :(得分:9)

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

jQuery的:

if($('input[type=checkbox]').is(':checked')) {
    $(this).prop('checked',true);
} else {
    $(this).prop('checked',false);
}

答案 2 :(得分:4)

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

if ($(':checkbox').is(':checked')){
    $(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
    $(':checkbox').prop('checked', false).removeAttr('checked');
}

答案 3 :(得分:2)

另一种做同样事情的方法是过滤 type = checkbox 属性:

$('input[type="checkbox"]').removeAttr('checked');

$('input[type="checkbox"]').prop('checked' , false);

请记住,在特定情况下,属性和属性之间的区别很重要。在 jQuery 1.6 之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则检索属性。

Know more ...

答案 4 :(得分:-1)

  <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>