今天使用jquery写checkbox的全选、全不选、反选,结果发现checked的属性有点怪,我用的是jquery-1.6.min.js在ie8和ff14.0.1下做的测试。

1、最初使用下面的代码执行全选、全不选、反选
$("[name='c_type']").attr('checked',true);//全选
$("[name='c_type']").attr('checked',false);//全不选
$("[name='c_type']").each(
    function(){
      $(this).attr("checked", !$(this).attr("checked") ;
    }
);//反选


全选和全不选没有问题,但当我首先选中一个checkbox后,再执行反选就出问题了,原来选中的并没有被取消掉。


2、没有深入研究为什么会出现上面所述问题,但最后我测试出了下面的代码 可以在ie8和ff14.0.1下 执行这3种操作都没问题
<script type="text/javascript" src="jquery-1.6.min.js"></script>
<script language="javascript">

    function checkAll(){
      $("[name='c_type']").each(
        function(){
          this.checked = true;
        }
      );
    }
    
    function uncheckAll(){
      $("[name='c_type']").each(
        function(){
          this.checked = false;
        }
      );
    }
    
    function reverseCheck(){
      $("[name='c_type']").each(
        function(){
        this.checked = !this.checked;
        }
      );
    }
    
</script>