Se prevedi questo comportamento piuttosto indesiderato, allora potresti passare un parametro extra da jQuery.trigger () al gestore dei clic della casella di controllo. Questo parametro aggiuntivo serve a notificare al gestore dei clic che il clic è stato attivato a livello di programmazione, anziché da parte dell'utente che fa clic direttamente sulla casella di controllo stessa. Il gestore dei clic della casella di controllo può quindi invertire lo stato del controllo segnalato.
Quindi ecco come attivare l'evento clic su una casella di controllo con l'ID "myCheckBox". Nota che sto anche passando un parametro oggetto con un singolo membro, nonUI, che è impostato su true:
$("#myCheckbox").trigger('click', {nonUI : true})
Ed ecco come lo gestisco nel gestore dell'evento clic della casella di controllo. La funzione del gestore verifica la presenza dell'oggetto nonUI come secondo parametro. (Il primo parametro è sempre l'evento stesso.) Se il parametro è presente e impostato a true, inverto lo stato segnalato .checked. Se non viene passato alcun parametro di questo tipo, cosa che non ci sarà se l'utente ha semplicemente fatto clic sulla casella di controllo nell'interfaccia utente, riporto lo stato .checked effettivo:
$("#myCheckbox").click(function(e, parameters) {
var nonUI = false;
try {
nonUI = parameters.nonUI;
} catch (e) {}
var checked = nonUI ? !this.checked : this.checked;
alert('Checked = ' + checked);
});
Versione JSFiddle su http://jsfiddle.net/BrownieBoy/h5mDZ/
Ho provato con Chrome, Firefox e IE 8.