আমি jQuery এর সাথে কোনও উপাদানগুলিতে আবদ্ধ ইভেন্টগুলি খুঁজে পেতে পারি?


355

আমি এই লিঙ্কটিতে দুটি ইভেন্ট হ্যান্ডলারকে আবদ্ধ করি:

<a href='#' id='elm'>Show Alert</a>

javascript:

$(function()
{
  $('#elm').click(_f);
  $('#elm').mouseover(_m);
});

function _f(){alert('clicked');}
function _m(){alert('mouse over');}

উপাদানটির সাথে এই ক্ষেত্রে, কোনও উপাদানকে আবদ্ধ করে সমস্ত ইভেন্টের তালিকা পাওয়ার কোনও উপায় আছে কি id="elm"?

উত্তর:


517

JQuery এর আধুনিক সংস্করণগুলিতে, আপনি $._datajQuery দ্বারা প্রশ্নযুক্ত উপাদানটির সাথে সংযুক্ত যে কোনও ইভেন্ট সন্ধান করতে পদ্ধতিটি ব্যবহার করবেন । দ্রষ্টব্য , এটি কেবলমাত্র একটি অভ্যন্তরীণ-ব্যবহার পদ্ধতি:

// Bind up a couple of event handlers
$("#foo").on({
    click: function(){ alert("Hello") },
    mouseout: function(){ alert("World") }
});

// Lookup events for this particular Element
$._data( $("#foo")[0], "events" );

এর ফলাফলটি $._dataএমন একটি বস্তু হবে যার মধ্যে আমরা সেট করা ইভেন্ট দুটিই রয়েছে ( mouseoutসম্পত্তিটি প্রসারিত করে নীচে চিত্রিত করা হয়েছে):

$ ._ এর জন্য কনসোল আউটপুট

তারপরে ক্রোমে, আপনি হ্যান্ডলারের ফাংশনটি ডানদিকে ক্লিক করতে পারেন এবং এটি আপনার কোডে সংজ্ঞায়িত করা ঠিক স্থানটি দেখতে আপনাকে "ফাংশন সংজ্ঞাটি দেখুন" ক্লিক করতে পারেন click


59
এটি কেবল jQuery সহায়কদের মাধ্যমে আবদ্ধ উপাদানগুলির জন্য কাজ করে।
অ্যালেক্স সিমনিনি

3
@ জাম্মিপিয়েচ আমি আপনার সমাধানটি চেষ্টা করছি তবে এখনও নির্বাচকের জন্য অপরিবর্তিত ফেরত পাচ্ছি। আমি used ('# এলেম') ব্যবহার করেছি। বাঁধুন ('ক্লিক', ফাংশন () {}); যদি এটি একটি পার্থক্য করতে হবে।
মার্কাস

6
@ মার্কাস আহহ, আফসোস আমি কিছু মিস করেছি, দুঃখিত :)$._data(element[0], ‘events’);
নটলিজার্ডস

16
এই দিনগুলিতে একটি অবশ্যই ব্যবহার করা উচিত: $ ._ ডেটা ($ ('# foo') [0]) .সপ্তাহসমূহ
ডোনাল্ড টেলর

5
$._data()JQuery অভ্যন্তরীণ দ্বারা ব্যবহৃত হয়। $.data()ব্যবহারকারীর কাছে সর্বজনীন পদ্ধতি। এবং $.data(element, 'events')সূক্ষ্ম কাজ করে।
স্লাইডশোপ 2

73

সাধারণ ক্ষেত্রে:

  • F12দেব সরঞ্জাম খোলার জন্য হিট করুন
  • Sourcesট্যাবে ক্লিক করুন
  • ডানদিকে, নীচে স্ক্রোল করুন Event Listener Breakpointsএবং গাছ প্রসারিত করুন
  • আপনি যে ইভেন্টগুলি শুনতে চান তাতে ক্লিক করুন।
  • লক্ষ্য উপাদানটির সাথে ইন্টারঅ্যাক্ট করুন, যদি তারা গুলি চালায় তবে আপনি ডিবাগারে ব্রেক পয়েন্ট পাবেন

একইভাবে, আপনি:

  • লক্ষ্য উপাদানটিতে ডান ক্লিক করুন -> " Inspect element" নির্বাচন করুন
  • দেব ফ্রেমের ডানদিকে নীচে স্ক্রোল করুন, নীচে ' event listeners'।
  • উপাদানগুলির সাথে কী ইভেন্ট সংযুক্ত রয়েছে তা দেখতে গাছটি প্রসারিত করুন। নিশ্চিত নয় যে এটি বুদবুদ দ্বারা পরিচালিত ইভেন্টগুলির জন্য কাজ করে (আমি অনুমান করছি না)

3
আমি সম্মত হ'ল এটি পছন্দের পদ্ধতি এবং এটি একটি সার্বজনীন সমাধান, বনাম jQuery এর উপর নির্ভর করে, যা উপলভ্য বা নাও থাকতে পারে।
ডেডবাইকিটেন

3
@ উম্মে ... প্রশ্নটি বিশেষত jQuery বোঝায় এবং উদাহরণ সংযুক্তিতে jQuery ব্যবহার করে - উত্তরটি কেবল jQuery (?) এর প্রসঙ্গে বৈধ হওয়া উচিত
কোড জকি

3
অন্যান্য প্রসঙ্গেও উত্তরগুলি বুঝতে সহায়তা করে। কেবলমাত্র কেউ নির্দিষ্ট প্রশ্ন জিজ্ঞাসা করার অর্থ এই নয় যে তারা যে সীমাবদ্ধ উত্তর পাবে তা হ'ল সর্বোত্তম উপলব্ধ best বিশেষত jQuery এর সাথে লোকেরা ক্রাচ হিসাবে এটি নির্ভর করে। অন্তর্নিহিত আর্কিটেকচার বোঝা গুরুত্বপূর্ণ। এই উত্তরটি দেখায় যে jQuery এমনকি অগত্যা প্রয়োজন হয় না। প্রশ্ন এবং উদাহরণটি ব্যবহার সম্পর্কে খুব অস্পষ্ট এবং অতএব, কোনও বৈধ উত্তর হিসাবে বিবেচিত হতে পারে এমন ব্যাখ্যার জন্য উন্মুক্ত।
ডেডবাইকিটেন

12

আমি এটি উত্তরোত্তর জন্য যুক্ত করছি; আরও একটি জাস লিখতে জড়িত না এমন একটি সহজ উপায় রয়েছে। ফায়ার ফক্সের জন্য আশ্চর্যজনক ফায়ারবগ অ্যাডন ব্যবহার করে ,

  1. উপাদানটিতে ডান ক্লিক করুন এবং 'ফায়ারব্যাগের সাহায্যে উপাদানটি পরীক্ষা করুন' নির্বাচন করুন
  2. সাইডবার প্যানেলে (স্ক্রিনশটে প্রদর্শিত), ছোট> তীর ব্যবহার করে ইভেন্ট ট্যাবে নেভিগেট করুন
  3. ইভেন্ট ট্যাব প্রতিটি ইভেন্টের জন্য ইভেন্টগুলি এবং সম্পর্কিত ফাংশনগুলি দেখায়
  4. এর পাশের পাঠ্যটি ফাংশনের অবস্থান প্রদর্শন করে

এখানে চিত্র বর্ণনা লিখুন


1
এটি আইভ ডেভ সরঞ্জামগুলিতেও উপলভ্য।
ডেভলিন কার্নেট

9

জাভাস্ক্রিপ্ট ফাংশন getEventListeners () ব্যবহার করে আপনি এখন কেবল কোনও বস্তুর সাথে আবদ্ধ ইভেন্ট শ্রোতার একটি তালিকা পেতে পারেন।

উদাহরণস্বরূপ, ডিভাইস কনসোলে নিম্নলিখিত টাইপ করুন:

// Get all event listners bound to the document object
getEventListeners(document);

4
আমি মনে করি এটি কোনও নেটিভ ফাংশন নয় এবং নিম্নলিখিত স্ক্রিপ্ট / নির্ভরতা প্রয়োজন: github.com/colxi/getEventListeners এটি উত্তরে যুক্ত করা উচিত, কারণ এটি অন্যথায় বিভ্রান্তিকর। তবে আমাকে সেই 'প্লাগইন'-এ আসার জন্য ধন্যবাদ; ভাল দেখাচ্ছে. :)
ডেনিস98

6

JQuery এর অডিট প্লাগইন প্লাগইন আপনি স্বাভাবিক ক্রোম দেব সরঞ্জামগুলির মাধ্যমে এটা করি উচিত নয়। এটি নিখুঁত নয়, তবে আপনাকে অবশ্যই আসল হ্যান্ডলারটি উপাদান / ইভেন্টের সাথে আবদ্ধ হতে হবে এবং কেবল জেনেরিক jQuery হ্যান্ডলারটি নয়।


3

ফায়ারফক্স কোয়ান্টাম 58.x এ এটি jQuery নির্বাচনকারী / অবজেক্টের সাথে ঠিক নির্দিষ্ট নয়, আপনি দেব সরঞ্জামগুলি ব্যবহার করে কোনও উপাদানটিতে ইভেন্ট হ্যান্ডলারগুলি খুঁজে পেতে পারেন:

  1. উপাদানটি ডান ক্লিক করুন
  2. প্রসঙ্গ মেনুতে, 'উপাদান পরিদর্শন করুন' ক্লিক করুন
  3. যদি উপাদানটির (ইয়েলো বাক্স) পাশে 'ইওভ' আইকন থাকে তবে 'ইভ' আইকনে ক্লিক করুন
  4. উপাদান এবং ইভেন্ট হ্যান্ডলারের জন্য সমস্ত ইভেন্ট প্রদর্শন করে

এফএফ কোয়ান্টাম দেব সরঞ্জামসমূহ


1
দুর্দান্ত উত্তর, বিশেষত স্ক্রিনশট এটিকে অনেক সহজ করে তোলে। প্রচেষ্টার জন্য আপনাকে ধন্যবাদ!
বিজি 21

2

আমি ($ ._ ডেটা ($ ("a.wine-আইটেম-লিঙ্ক")) [0]) এর মতো কিছু ব্যবহার করেছি events ... ইভেন্টগুলি == নাল) something ... কিছু করুন, তাদের ইভেন্ট হ্যান্ডলারগুলিকে আবারও আবদ্ধ করুন check চেক করতে যদি আমার উপাদানটি কোনও ইভেন্টের সাথে আবদ্ধ থাকে। এটি এখনও অপরিজ্ঞাত (নাল) বলবে যদি আপনি সেই উপাদানটি থেকে আপনার সমস্ত ইভেন্ট হ্যান্ডলারের সাথে তাল মিলেন। এজন্যই যদি আমি কোনও অভিব্যক্তিতে এটি মূল্যায়ন করি।


2

নোট করুন যে ইভেন্টগুলি প্রশ্নের মধ্যে থাকা উপাদানটির পরিবর্তে ডকুমেন্টের সাথে সংযুক্ত থাকতে পারে। সেক্ষেত্রে, আপনি ব্যবহার করতে চাইবেন:

$._data( $(document)[0], "events" );

এবং সঠিক নির্বাচক সহ ইভেন্টটি সন্ধান করুন :

এখানে চিত্র বর্ণনা লিখুন

এবং তারপরে হ্যান্ডলারটি দেখুন > [[ফাংশন অবস্থান]]

এখানে চিত্র বর্ণনা লিখুন


0

যখন আমি complex ._ ডেটাতে একটি জটিল জটিল ডোম ক্যোয়ারি পাস করি: $._data($('#outerWrap .innerWrap ul li:last a'), 'events')এটি ব্রাউজার কনসোলে অপরিজ্ঞাত নিক্ষেপ করে।

তাই আমাকে $._data($('#outerWrap')[0], 'events')ট্যাগগুলির ইভেন্টগুলি দেখতে প্যারেন্ট ডিভিতে $ ._ ডেটা ব্যবহার করতে হয়েছিল । এখানে এর জন্য একটি জেএসফিডেল: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/


3
এর কারণ হ'ল আপনি যেখান থেকে ইভেন্টটি অর্পণ করছেন $('#outerWrap')। ঘটনাগুলি প্রকৃতপক্ষে পৃথক নোঙ্গরগুলির চেয়ে সেই উপাদানটির সাথে আবদ্ধ।
স্কটাক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.