Si anticipa este comportamiento bastante no deseado, entonces una alternativa sería pasar un parámetro adicional de jQuery.trigger () al controlador de clic de la casilla de verificación. Este parámetro adicional es para notificar al controlador de clics que el clic se ha activado mediante programación, en lugar de que el usuario haga clic directamente en la casilla de verificación. El controlador de clic de la casilla de verificación puede invertir el estado de verificación informado.
Así que así es como activaría el evento de clic en una casilla de verificación con el ID "myCheckBox". Tenga en cuenta que también estoy pasando un parámetro de objeto con un solo miembro, nonUI, que se establece en verdadero:
$("#myCheckbox").trigger('click', {nonUI : true})
Y así es como lo manejo en el controlador de eventos de clic de la casilla de verificación. La función de controlador comprueba la presencia del objeto que no es de interfaz de usuario como segundo parámetro. (El primer parámetro es siempre el evento en sí). Si el parámetro está presente y se establece en verdadero, invierto el estado .checked informado. Si no se pasa tal parámetro, lo cual no ocurrirá si el usuario simplemente hace clic en la casilla de verificación en la interfaz de usuario, entonces informo el estado real .checked:
$("#myCheckbox").click(function(e, parameters) {
var nonUI = false;
try {
nonUI = parameters.nonUI;
} catch (e) {}
var checked = nonUI ? !this.checked : this.checked;
alert('Checked = ' + checked);
});
Versión de JSFiddle en http://jsfiddle.net/BrownieBoy/h5mDZ/
Lo he probado con Chrome, Firefox e IE 8.