このかなり望ましくない動作が予想される場合は、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);
});
http://jsfiddle.net/BrownieBoy/h5mDZ/の JSFiddle バージョン
Chrome、Firefox、IE 8 でテストしました。