Una checkbox ha due stati: selezionato e non selezionato. In base allo stato corrente si può eseguire un'azione con jQuery. Il problema è che se proviamo semplicemente a verificare il valore booleano dell'attributo checked otteniamo risultati non affidabili. Occorre usare un altro approccio.
Possiamo utilizzare il metodo .prop() sull'evento change. Questo evento (e non click) è quello corretto da usare:
$('#check').change(function() {
var $check = $(this),
$div = $check.parent();
if ($check.prop('checked')) {
$div.addClass('test');
} else {
$div.removeClass('test');
}
});
.prop() verifica se un elemento ha una determinata proprietà associata. Si tratta di un metodo pensato per risolvere le incongruenze delle verifiche operate tramite il metodo .attr().