我在我的页面上有这个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工作正常,但是当我使用全部检查时,它不会将其识别为“更改”
答案 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;