Bu oldukça istenmeyen davranışı öngörürseniz, jQuery.trigger () 'den onay kutusunun tıklama işleyicisine fazladan bir parametre geçirebilirsiniz. Bu ekstra parametre, tıklama işleyicisine tıklamanın kullanıcı tarafından doğrudan onay kutusunu tıklaması yerine programla tetiklendiğini bildirmektir. Onay kutusunun tıklama işleyicisi, rapor edilen kontrol durumunu tersine çevirebilir.
İşte "myCheckBox" kimliğine sahip bir onay kutusundaki tıklama olayını nasıl tetikleyeceğim. Ayrıca, true olarak ayarlanmış tek bir üye nonUI ile bir nesne parametresi geçirdiğimi unutmayın:
$("#myCheckbox").trigger('click', {nonUI : true})
Ve onay kutusunun tıklama olayı işleyicisinde bunu şu şekilde ele alıyorum. İşleyici işlevi, ikinci parametresi olarak nonUI nesnesinin varlığını kontrol eder. (İlk parametre her zaman olayın kendisidir.) Parametre mevcutsa ve true olarak ayarlanmışsa, rapor edilen .checked durumunu tersine çeviririm. Böyle bir parametre aktarılmazsa (kullanıcı, kullanıcı arayüzündeki onay kutusunu tıklarsa bu olmaz), gerçek .checked durumunu bildiririm:
$("#myCheckbox").click(function(e, parameters) {
var nonUI = false;
try {
nonUI = parameters.nonUI;
} catch (e) {}
var checked = nonUI ? !this.checked : this.checked;
alert('Checked = ' + checked);
});
En JSFiddle versiyonu http://jsfiddle.net/BrownieBoy/h5mDZ/
Chrome, Firefox ve IE 8 ile test ettim.