jQuery আপনাকে কোনও নির্দিষ্ট উপাদানের জন্য কেবল ইভেন্টগুলিতে অ্যাক্সেস করতে দিচ্ছে না। আপনি অননুমোদিত অভ্যন্তরীণ পদ্ধতি ব্যবহার করে এগুলি অ্যাক্সেস করতে পারেন
$._data(element, "events")
তবে এটি আপনাকে সমস্ত ইভেন্ট দেয় না, সুনির্দিষ্টভাবে আপনাকে নির্ধারিত ইভেন্টগুলি প্রদর্শন করবে না
$([selector|element]).on()
এই ইভেন্টগুলি দস্তাবেজের অভ্যন্তরে সঞ্চিত রয়েছে, তাই আপনি ব্রাউজ করে সেগুলি আনতে পারবেন
$._data(document, "events")
তবে এটি কঠোর পরিশ্রম, যেমন পুরো ওয়েবপৃষ্ঠার জন্য ইভেন্ট রয়েছে।
টম জি উপরে তৈরি ফাংশন তৈরি করেছেন যা কেবলমাত্র প্রদত্ত উপাদানগুলির ইভেন্টগুলির জন্য ডকুমেন্ট ফিল্টার করে এবং উভয় পদ্ধতির আউটপুট মার্জ করে, তবে এতে আউটপুটে (এবং কার্যকরভাবে উপাদানটির jQuery অভ্যন্তরীণ ইভেন্ট তালিকায় আপনার অ্যাপ্লিকেশনের সাথে বিশৃঙ্খলা জাগানো) ডুপ্লিকেটিং ইভেন্টগুলির ত্রুটি ছিল। আমি সেই ত্রুটিটি ঠিক করেছি এবং আপনি নীচের কোডটি সন্ধান করতে পারেন। কেবলমাত্র এটি আপনার ডেভ কনসোলে বা আপনার অ্যাপ কোডে পেস্ট করুন এবং প্রদত্ত উপাদানটির জন্য সমস্ত ইভেন্টের দুর্দান্ত তালিকা পাওয়ার প্রয়োজন হলে এটি কার্যকর করুন।
কী লক্ষ্য করা জরুরী, উপাদানটি আসলে HTMLElement, jQuery অবজেক্ট নয়।
function getEvents(element) {
var elemEvents = $._data(element, "events");
var allDocEvnts = $._data(document, "events");
function equalEvents(evt1, evt2)
{
return evt1.guid === evt2.guid;
}
for(var evntType in allDocEvnts) {
if(allDocEvnts.hasOwnProperty(evntType)) {
var evts = allDocEvnts[evntType];
for(var i = 0; i < evts.length; i++) {
if($(element).is(evts[i].selector)) {
if(elemEvents == null) {
elemEvents = {};
}
if(!elemEvents.hasOwnProperty(evntType)) {
elemEvents[evntType] = [];
}
if(!elemEvents[evntType].some(function(evt) { return equalEvents(evt, evts[i]); })) {
elemEvents[evntType].push(evts[i]);
}
}
}
}
}
return elemEvents;
}