今天使用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>