Jquery checkall / uncheck无法正常工作?

时间:2017-06-26 13:43:35

标签: jquery

  $(document).on('change', '#check-all', function() {

        if($(this).is(":checked")) {
            $('.leads_checkbox').prop('checked','checked'); 
        } else {
            $('.leads_checkbox').removeProp('checked');
        }
    });

这是我的代码,它在点击后检查所有内容,但不取消选中复选框。请帮忙。

3 个答案:

答案 0 :(得分:1)

而不是使用prop使用attr对我来说很好。

更新代码:

$(document).on('change', '#check-all', function() {

    if($(this).is(":checked")) {
        $('.leads_checkbox').attr('checked','checked'); 
    } else {
        $('.leads_checkbox').removeAttr('checked');
    }
});

演示: https://codepen.io/anon/pen/pwWqxm

<强>更新

在某些情况下,

attr失败了。我认为你应该坚持使用prop

演示: https://codepen.io/anon/pen/pwWqxm

答案 1 :(得分:1)

以下是您的问题的简单示例

  $(document).on('change', '#check-all', function() {
       $('.leads_checkbox').prop('checked',$(this).is(":checked")); 
  });

答案 2 :(得分:0)

问题在于removeProp("checked")无法正常工作,因为checked是该元素的本机属性。您可以在.removeProp() documentation

中看到
  

请勿使用此方法删除本机属性,例如已选中,已禁用或已选中。

您最好将checked属性重置为false

$('.leads_checkbox').prop('checked', false);

<强>演示:

$(document).on('change', '#check-all', function() {

        if($(this).is(":checked")) {
            $('.leads_checkbox').prop('checked','checked'); 
        } else {
            $('.leads_checkbox').prop('checked', false);
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Check All<input type="checkbox" id="check-all"/>
<br/><br/>
<input type="checkbox" class="leads_checkbox"/>
<input type="checkbox" class="leads_checkbox" />
<input type="checkbox" class="leads_checkbox" />
<input type="checkbox" class="leads_checkbox" />