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);
}