jquery复选框重置 - 不一致的操作

时间:2017-03-21 13:24:18

标签: javascript jquery checkbox

我想使用Jquery重置复选框。我已经阅读了有关该主题的问答,并提出了这个问题:

<script>
$(document).ready(function(){
    $("#clearall").click(function(){
        alert('clearing checkboxes');
        $('input:checkbox').attr('checked',false);
    });
});
</script>
<input id="cb1" type="checkbox" checked>
<input id="cb2" type="checkbox" checked >
<button id="clearall">Click me</button>

加载时,会显示两个复选框。单击该按钮可清除它们。这是预期的。不期望的是,如果我选中复选框并单击按钮,则复选框不会清除。不会出现javascript错误或警告。我已经检查了Firefox,Safari和Chrome中的功能 - 所有3个操作方式都相同。我插入了一个警报,它会在每次尝试时触发,因此该函数正在执行 - 但是复选框在第一次之后没有重置。任何人都可以提供任何有关为什么复选框不清除是否由用户设置的信息?

2 个答案:

答案 0 :(得分:0)

提示:处理布尔属性(例如禁用,检查,选择等)时,请使用.prop()从不使用.attr().removeProp()或{{ 1}}。为什么?这是因为thisthis

  • .removeAttr().attr():属性是动态的,属性不是 - 它们反映了初始值。
  • .removeAttr()

      

    注意:请勿使用.removeProp()删除本机属性,例如已选中,已禁用或已选中。这将完全删除属性,一旦删除,就不能再次添加到元素。

&#13;
&#13;
removeProp()
&#13;
$(document).ready(function(){
    $("#clearall").click(function(){
        $('input:checkbox').prop('checked',false);
    });
});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

尝试使用.removeAttr('checked')