2009-11-13 8 views
5

जैसा कि सवाल कहा गया है, मुझे किसी विशिष्ट तत्व से जुड़ी घटनाओं की सूची की आवश्यकता है।क्या jQuery में किसी तत्व से जुड़ी घटनाओं की एक सूची प्राप्त करना संभव है?

मेरा मतलब है कि डोम की लोडिंग पर उस तत्व से बाध्य क्लिक, माउसओवर इत्यादि जैसी घटनाएं हैं।

(बेवकूफ) उदाहरण:

$("#element").click(function() 
{ 
    //stuff 
}); 
$("#element").mouseover(function() 
{ 
    //stuff 
}); 
$("#element").focus(function() 
{ 
    //stuff 
}); 

परिणाम:

क्लिक करें, माउसओवर, फोकस

+0

क्या आप एक तैनात समाधान को डीबग या प्रबंधित करने का प्रयास कर रहे हैं? –

उत्तर

13

हर घटना एक सरणी में जोड़ा जाता है।

यह सरणी jQuery डेटा पद्धति का उपयोग करके पहुँचा जा सकता है:

$("#element").data('events') 

Firebug के लिए एक वस्तु की सभी घटनाओं लॉग इन करने के बस टाइप करें:

console.log ($("#element").data('events')) 

और तुम सब बाध्य की एक सूची मिल जाएगा आयोजन।


अद्यतन:

के लिए jQuery 1.8 और उच्च आप आंतरिक jQuery डेटा वस्तु पर गौर करने के लिए है:

$("#element").each(function(){console.log($._data(this).events);}); 
// or 
console.log($._data($("#element")[0]).events); 
+1

नए आगंतुकों के लिए एक नोट के रूप में: यह उत्तर jQuery के बाद पुराना है [संस्करण 1.8] (http://blog.jquery.com/2011/11/08/building-a-slimmer-jquery/): "* .data ("घटनाएं"): jQuery प्रत्येक तत्व पर घटनाओं (इसके लिए प्रतीक्षा करें) नामक डेटा ऑब्जेक्ट में अपने ईवेंट से संबंधित डेटा संग्रहीत करता है। यह एक आंतरिक डेटा संरचना है इसलिए 1.8 में इसे उपयोगकर्ता डेटा नाम स्थान से हटा दिया जाएगा, इसलिए यह ' एक ही नाम की वस्तुओं के साथ संघर्ष नहीं। [...] * "। यह भी देखें: [jQuery 1.8 ईवेंट हैंडलर ढूंढें] (http://stackoverflow.com/questions/12214654/jquery-1-8-find-event-handlers) – insertusernamehere

+1

धन्यवाद - मैंने एक नोट जोड़ा :) – jantimon

2

आप इसे element.data('events'); तक पहुंच सकते हैं। उदाहरण:

var events = element.data('events'); 
for (var type in events) { 
    // `type` is "click", "mouseover", "change", etc. 
    for (var handler in events[type]) { 
     // `handler` is the associated function. 
    } 
} 
संबंधित मुद्दे