选中所有复选框不起作用

时间:2013-07-22 05:32:33

标签: jquery

jsfiddle

CODE:

<script type="text/javascript">
    function checkAll() {
    var checked = $("#checkAll").is(':checked');
    $(".check_row").attr("checked", checked);
}
</script>
<div>
    <input type="checkbox" id="checkAll" onclick="checkAll()" />Check All <br />
    <input type="checkbox" class="check_row" />One <br />
    <input type="checkbox" class="check_row" />Two <br />
    <input type="checkbox" class="check_row" />Three <br />
    <input type="checkbox" class="check_row" />Four <br />
    <input type="checkbox" class="check_row" />Five <br />
    <input type="checkbox" class="check_row" />Six <br />    
</div>

“check all”复选框仅适用于第一次。有人可以帮我找出发生了什么问题吗?

5 个答案:

答案 0 :(得分:3)

更改

$(".check_row").attr("checked", checked);

$(".check_row").prop("checked", checked);

请参阅Fiddle

答案 1 :(得分:2)

  1. 由于您使用的jquery版本大于1.6,因此
  2. 中的属性从attr更改为prop
  3. 如果在函数中声明变量,它将多次声明变量
  4. 你甚至不需要变量,如果还有其他条件......请查看我的更新示例
  5. FIDDLE DEMO

    var checked
    
    function checkAll() {
    
        checked = $("#checkAll").is(':checked');
    
        $(".check_row").prop("checked", checked);
    
    }
    

    更新

    FIDDLE DEMO

    $('#checkAll').on('change',function(){    
        $(".check_row").prop("checked", $(this).is(':checked'));    
    });
    

答案 2 :(得分:1)

$('#checkAll').on('change',function(){
    if($(this).is(':checked')){
        $(".check_row").prop("checked", true);
    }
    else{
        $(".check_row").prop("checked", false);
    }
});

JSFiddle

答案 3 :(得分:0)

更改此行

    $(".check_row").attr("checked", checked); 

     to

    $(".check_row").attr("checked", true);

小提琴:http://jsfiddle.net/auXdC/5/

答案 4 :(得分:0)

function checkAll() 
{
     var checked = $("#checkAll").is(':checked');

     $(".check_row").prop("checked", true);

    if(!checked)
    {
           $(".check_row").removeAttr("checked");
    }

}

JSFiddle