Tal vez un poco tarde, pero cuando se trata de marcar todas las casillas de verificación, creo que también debe manejar el escenario para cuando tiene marcada la casilla de verificación marcar todas, y luego desmarcar una de las casillas de verificación a continuación.
En ese caso, debería desmarcar automáticamente la casilla de verificación marcar todo.
Además, al marcar manualmente todas las casillas de verificación, debe terminar marcando la casilla de verificación marcar todas automáticamente.
Necesita dos controladores de eventos, uno para la casilla de verificación todo y otro para hacer clic en cualquiera de los cuadros individuales a continuación.
// 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"));
}