Jika Anda mengantisipasi perilaku yang agak tidak diinginkan ini, maka salah satu tindakan selanjutnya adalah meneruskan parameter tambahan dari jQuery.trigger () ke penangan klik kotak centang. Parameter tambahan ini untuk memberi tahu penangan klik bahwa klik telah dipicu secara terprogram, bukan oleh pengguna yang langsung mengeklik kotak centang itu sendiri. Penangan klik kotak centang kemudian dapat membalik status pemeriksaan yang dilaporkan.
Jadi, inilah cara saya memicu peristiwa klik pada kotak centang dengan ID "myCheckBox". Perhatikan bahwa saya juga mengirimkan parameter objek dengan satu anggota, nonUI, yang disetel ke true:
$("#myCheckbox").trigger('click', {nonUI : true})
Dan inilah cara saya menanganinya di pengendali event klik kotak centang. Fungsi handler memeriksa keberadaan objek nonUI sebagai parameter keduanya. (Parameter pertama selalu adalah peristiwa itu sendiri.) Jika parameter ada dan disetel ke true maka saya membalik status .checked yang dilaporkan. Jika tidak ada parameter seperti itu yang dilewatkan - yang tidak akan ada jika pengguna cukup mengklik kotak centang di UI - maka saya melaporkan status .checked yang sebenarnya:
$("#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 JSFiddle di http://jsfiddle.net/BrownieBoy/h5mDZ/
Saya telah menguji dengan Chrome, Firefox dan IE 8.