Pembaruan 24 Agustus '12 : Di jQuery 1.8, tidak mungkin lagi untuk mengakses acara elemen menggunakan.data('events') . (Lihat bug ini untuk detailnya.) Dimungkinkan untuk mengakses data yang sama dengan jQuery._data(elem, 'events'), struktur data internal, yang tidak berdokumen dan karenanya tidak 100% dijamin akan tetap stabil. Namun ini seharusnya tidak menjadi masalah, dan baris yang relevan dari kode plugin di atas dapat diubah sebagai berikut:
var data = jQuery._data(this[0], 'events')[type];
Peristiwa jQuery disimpan dalam objek data yang disebut events, sehingga Anda dapat mencari di ini:
var button = $('#myButton');
if (-1 !== $.inArray(onButtonClicked, button.data('events').click)) {
button.click(onButtonClicked);
}
Akan lebih baik, tentu saja, jika Anda dapat menyusun aplikasi sehingga kode ini hanya dipanggil sekali.
Ini bisa dienkapsulasi menjadi plugin:
$.fn.isBound = function(type, fn) {
var data = this.data('events')[type];
if (data === undefined || data.length === 0) {
return false;
}
return (-1 !== $.inArray(fn, data));
};
Anda kemudian dapat menelepon:
var button = $('#myButton');
if (!button.isBound('click', onButtonClicked)) {
button.click(onButtonClicked);
}