jquery检查所有复选框'更改'函数

时间:2016-08-09 17:51:58

标签: jquery

我在我的页面上有这个jquery,它选择了一个CheckInvoice类的复选框

$("#checkAllInvoices").click(function(){
    $('.checkInvoice').not(this).prop('checked', this.checked);
});

然后我看到了复选框上的更改

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

}

$('#check1').on('change', function() {

}

$('#check2').on('change', function() {

}

关于改变'当我选择每个复选框时,jquery工作正常,但是当我使用全部检查时,它不会将其识别为“更改”

1 个答案:

答案 0 :(得分:2)

有一些事情正在发生。

首先,无法看到您的HTML,但似乎您可能会在每个复选框中使用check作为id。这不会起作用,id必须是唯一的。我只是使用你的复选框类替换了它。

其次,您尝试根据checkAllInvoices复选框设置每个复选框的状态 - 但是您没有遍历每个复选框 - 您只是在改变状态checkAllInvoices元素。我还从checkInvoice元素中删除了checkAllInvoices类,因此您不需要执行not(this)测试

第三(和真正的答案),您需要触发更改功能 - 而不仅仅是更改属性的状态



"use strict";

function init() {
    $("#checkAllInvoices").click(function(){
        var checked = this.checked;
        $('.checkInvoice').each(
            function() {
                if (this.checked != checked) $(this).trigger('click');
            }
        );
    });

    $('.checkInvoice').on('change', function() {
        console.log(this.value)
    });
}

$( document ).ready(init)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<body>
<form name="test">
<input type="checkbox" class="checkInvoice" value="1">1
<input type="checkbox" class="checkInvoice" value="2">2
<input type="checkbox" class="checkInvoice" value="3">3
<input type="checkbox" class="checkInvoice" value="4">4
<input type="checkbox" class="checkInvoice" value="5">5<br />
<input type="checkbox" id="checkAllInvoices">check all<br />
<br />
</form>
</body>
&#13;
&#13;
&#13;