यदि आप इसके बजाय अवांछित व्यवहार का अनुमान लगाते हैं, तो इसके आसपास एक दूर jQuery.trigger () से चेकबॉक्स के क्लिक हैंडलर में एक अतिरिक्त पैरामीटर पास करना होगा। यह अतिरिक्त पैरामीटर क्लिक हैंडलर को सूचित करने के लिए है कि क्लिक को प्रोग्रामेटिक रूप से ट्रिगर किया गया है, बजाय उपयोगकर्ता सीधे चेकबॉक्स पर क्लिक करने के। चेकबॉक्स का क्लिक हैंडलर तब रिपोर्ट किए गए चेक की स्थिति को उलट सकता है।
तो यहां बताया गया है कि किस तरह से मैं आईडी "myCheckBox" के साथ एक चेकबॉक्स पर क्लिक इवेंट को ट्रिगर करूंगा। ध्यान दें कि मैं एक एकल सदस्य के साथ एक वस्तु पैरामीटर भी पारित कर रहा हूं, जो कि nonUI है, जो सत्य पर सेट है:
$("#myCheckbox").trigger('click', {nonUI : true})
और यहां बताया गया है कि मैं चेकबॉक्स के क्लिक हैंड हैंडलर में कैसे हैंडल करता हूं। हैंडलर फ़ंक्शन अपने दूसरे पैरामीटर के रूप में nonUI ऑब्जेक्ट की उपस्थिति के लिए जाँच करता है। (पहला पैरामीटर हमेशा ईवेंट ही होता है।) यदि पैरामीटर मौजूद है और सही पर सेट है तो मैं रिपोर्ट की गई स्थिति को उल्टा कर देता हूं। यदि ऐसा कोई पैरामीटर पारित नहीं किया गया है - जो तब नहीं होगा जब उपयोगकर्ता केवल 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/ पर
मैंने क्रोम, फ़ायरफ़ॉक्स और IE 8 के साथ परीक्षण किया है।