このやや望ましくない動作が予想される場合は、jQuery.trigger()からチェックボックスのクリックハンドラーに追加のパラメーターを渡すことで回避できます。この追加のパラメーターは、ユーザーがチェックボックス自体を直接クリックするのではなく、クリックがプログラムによってトリガーされたことをクリックハンドラーに通知するためのものです。チェックボックスのクリックハンドラーは、報告されたチェックステータスを反転できます。
これが、ID "myCheckBox"のチェックボックスでクリックイベントをトリガーする方法です。また、trueに設定されている単一のメンバーnonUIを使用してオブジェクトパラメーターを渡していることに注意してください。
$("#myCheckbox").trigger('click', {nonUI : true})
チェックボックスのクリックイベントハンドラーでこれを処理する方法を次に示します。ハンドラー関数は、2番目のパラメーターとして非UIオブジェクトの存在を確認します。(最初のパラメーターは常にイベント自体です。)パラメーターが存在し、trueに設定されている場合、報告された.checkedステータスを反転します。そのようなパラメーターが渡されない場合-ユーザーがUIのチェックボックスをクリックするだけの場合は行われません-実際の.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);
});
JSFiddleバージョン(http://jsfiddle.net/BrownieBoy/h5mDZ/)
私はChrome、Firefox、IE 8でテストしました。