2010-03-05 13 views
48

साथ ईवेंट हैंडलर्स के लिए बाध्य कार्यों jQuery के साथ आप एक घटना के लिए बाध्य कर सकते हैं कार्यों .bind() या ईवेंट हैंडलर सहायक कार्यों में से एक का उपयोग कर एक डोम वस्तु पर शुरू हो गया।एक्सेस करना jQuery

jQuery को इसे आंतरिक रूप से किसी भी तरह से स्टोर करना है और मुझे आश्चर्य है कि क्या यह संभव है कि डीओएम ऑब्जेक्ट दिया जाए, यह पता लगाने के लिए कि कौन सी घटनाएं ऑब्जेक्ट से जुड़ी हैं, और उन कार्यों तक पहुंचें आदि। वांछित वापसी परिणाम इस तरह कुछ दिख सकता है :

{ 
    click: [function1, function2], 
    change: [function3], 
    blur: [function4, function5, function6] 
} 
+0

यह प्रश्न देखें: http://stackoverflow.com/questions/2382994/how-to-check-if-any-javascript-event-listeners-handlers-attached-to-an-element-do – Pointy

उत्तर

35

संपादित: विधि नीचे केवल jQuery < में काम करता है 1.7

आप इस लेख में रुचिकर युक्तियां और सुझाव का एक बहुत मिल सकते हैं: Things you may not know about jQuery

ऐसा नहीं है कि jQuery data का उपयोग करता ईवेंट हैंडलर्स स्टोर करने के लिए लगता है:

आप jQuery के घटना भंडारण के माध्यम से सभी ईवेंट हैंडलर्स एक तत्व (या किसी भी वस्तु) करने के लिए बाध्य कर सकते हैं:

// List bound events: 
console.dir(jQuery('#elem').data('events')); 

// Log ALL handlers for ALL events: 
jQuery.each($('#elem').data('events'), function(i, event){ 
    jQuery.each(event, function(i, handler){ 
     console.log(handler['handler'].toString()); 
    }); 
}); 

// You can see the actual functions which will occur 
// on certain events; great for debugging! 
+7

यह अब नहीं jQuery 1.7 और नए में काम करता है; नए तरीके के लिए ईक्स का जवाब देखें। – kevingessner

+0

मैंने इसे प्रतिबिंबित करने के लिए अपना जवाब संपादित कर लिया है। धन्यवाद – PatrikAkerstrand

+0

काम नहीं कर रहा है। की कोशिश की '$ (दस्तावेज़) .data ('घटनाओं')' और '$ ('एचटीएमएल') को डेटा ('घटनाओं')' -। कोई लाभ नहीं हुआ। – Cody

66

jQuery 1.7 नियमित डेटा में घटनाओं() फ़ंक्शन उजागर रुक गया है। आप अब भी उन्हें इस तरह प्राप्त कर सकते हैं:

var elem = $('#someid')[0]; 
var data = jQuery.hasData(elem) && jQuery._data(elem); 
console.log(data.events); 

कृपया ध्यान दें, कि यह केवल घटनाक्रम जो jQuery का उपयोग कर के लिए बाध्य किया गया है के लिए काम करता है। आप AFAIK सभी घटनाओं जो addEventListener की तरह नियमित रूप से डोम कार्यों का उपयोग कर के लिए बाध्य किया गया है को देखने के लिए कोई रास्ता नहीं है।

आप उन्हें वेबकिट इंस्पेक्टर में देख सकते हैं हालांकि: तत्व टैब में वांछित डॉम नोड पर नेविगेट करें, दाईं ओर "ईवेंट श्रोताओं" ड्रॉप डाउन का चयन करें।

+1

jQuery._data (ELEM) संस्करण 1.10.2 में काम ठीक – rajakvk

संबंधित मुद्दे