Можливо, трохи пізно, але, маючи справу з прапором усіх прапорців, я вважаю, що ви також повинні обробити сценарій, коли ви встановите прапорець усі прапорець, а потім зніміть прапорець одного з пунктів нижче.
У такому випадку слід автоматично зняти прапорець біля всіх прапорців.
Крім того, коли ви перевіряєте всі прапорці вручну, вам слід завершити автоматичну перевірку всіх прапорців.
Вам потрібні два обробники подій, один для прапорця всіх, і один для клацання будь-якого з окремих полів нижче.
// HANDLES THE INDIVIDUAL CHECKBOX CLICKS
function client_onclick() {
var selectAllChecked = $("#chk-clients-all").prop("checked");
// IF CHECK ALL IS CHECKED, AND YOU'RE UNCHECKING AN INDIVIDUAL BOX, JUST UNCHECK THE CHECK ALL CHECKBOX.
if (selectAllChecked && $(this).prop("checked") == false) {
$("#chk-clients-all").prop("checked", false);
} else { // OTHERWISE WE NEED TO LOOP THROUGH INDIVIDUAL CHECKBOXES AND SEE IF THEY ARE ALL CHECKED, THEN CHECK THE SELECT ALL CHECKBOX ACCORDINGLY.
var allChecked = true;
$(".client").each(function () {
allChecked = $(this).prop("checked");
if (!allChecked) {
return false;
}
});
$("#chk-clients-all").prop("checked", allChecked);
}
}
// HANDLES THE TOP CHECK ALL CHECKBOX
function client_all_onclick() {
$(".client").prop("checked", $(this).prop("checked"));
}