24 अगस्त '12 को अपडेट करें : jQuery 1.8 में, तत्व के ईवेंट का उपयोग करना संभव नहीं है .data('events')। ( विवरण के लिए इस बग को देखें।) jQuery._data(elem, 'events')एक आंतरिक डेटा संरचना के साथ एक ही डेटा तक पहुंचना संभव है , जो कि अनिर्दिष्ट है और इसलिए स्थिर रहने के लिए 100% गारंटी नहीं है। हालांकि, यह एक समस्या नहीं होनी चाहिए, और ऊपर दिए गए प्लगइन कोड की प्रासंगिक रेखा को निम्न में बदला जा सकता है:
var data = jQuery._data(this[0], 'events')[type];
jQuery की घटनाओं को डेटा ऑब्जेक्ट में संग्रहीत किया जाता है events, जिसे आप इसमें खोज सकते हैं:
var button = $('#myButton');
if (-1 !== $.inArray(onButtonClicked, button.data('events').click)) {
button.click(onButtonClicked);
}
यह निश्चित रूप से सबसे अच्छा होगा, यदि आप अपने आवेदन को संरचित कर सकते हैं तो यह कोड केवल एक बार कॉल किया जाएगा।
यह एक प्लगइन में समझाया जा सकता है:
$.fn.isBound = function(type, fn) {
var data = this.data('events')[type];
if (data === undefined || data.length === 0) {
return false;
}
return (-1 !== $.inArray(fn, data));
};
आप तब कॉल कर सकते हैं:
var button = $('#myButton');
if (!button.isBound('click', onButtonClicked)) {
button.click(onButtonClicked);
}