2010-02-08 4 views
8

मेरे पास click ईवेंट से जुड़े फ़ंक्शन वाले कुछ तत्व हैं। मैं mouseover और mouseout घटनाओं के बजाय उसी कार्य को बांधना चाहता हूं। क्या क्लिक ईवेंट का संदर्भ प्राप्त करना संभव है ताकि मैं इसे अन्य घटनाओं में असाइन कर सकूं? मैं कुछ इस तरह (each() अंदर) की कल्पना कर रहा हूँ:jQuery: क्या मुझे तत्व पर बाध्य घटनाओं का संदर्भ मिल सकता है?

$(this).bind('mouseover', $(this).click()); 
$(this).bind('mouseout', $(this).click()); 
$(this).unbind('click'); 

प्रश्न आप

आप क्यों नहीं बस कोड है कि यह क्लिक करें घटना के लिए बाध्य कर रहा है में परिवर्तन नहीं करते पूछ सकते हैं?

जे एस यह ऊपर (, यदि आप उत्सुक हैं DHTML Menu) एक Drupal मॉड्यूल का हिस्सा है, इसलिए मैं मॉड्यूल कोड बदलने के लिए नहीं करना चाहते हैं, क्योंकि यह साफ हो जाएगा जब मॉड्यूल अनिवार्य रूप से अद्यतन किया जाता है की स्थापना की जाती है कि भविष्य में। मैं पृष्ठ के अन्य हिस्सों के लिए click हैंडलर का भी उपयोग कर रहा हूं - मैं केवल इसे एक मेनू के लिए mouseover और mouseout पर ले जाना चाहता हूं।

+1

http://stackoverflow.com/questions/516265/jquery-unbind-event-handlers-to-bind-them-again-later के समान: निम्नलिखित आप क्या चाहते हैं करना होगा। –

उत्तर

13

jQuery में, सभी घटनाओं jQuery से बंधे कुंजी events तहत data में संग्रहीत हैं।

var $this = $(this), 
    events = $this.data('events'); 
if(events && events['click']){ 
    // Loop through each click event bound to this control 
    $.each(events['click'], function(){ 
    // this = the function 
    $this.bind('mouseover mouseout', this); 
    }); 
    // Finally, remove all `click` handlers with one call 
    $this.unbind('click'); 
} 
+9

बस दूसरे के भविष्य के संदर्भ के लिए, यह jquery 1.8 में गिरा दिया गया है। .data ('events') उपलब्ध नहीं है। Jquery 1.8 में –

+8

, आप अभी भी '$ ._ डेटा (तत्व, "ईवेंट") के साथ ईवेंट डिक्शनरी तक पहुंच सकते हैं, लेकिन यह किसी भी समय बदल सकता है। – hughes

+0

क्या होगा यदि मैं न केवल jQuery द्वारा बल्कि सभी विधियों/प्रक्रियाओं से जुड़ी सभी घटनाओं को ढूंढना चाहता हूं। –

3

इस प्रयास करें:

jQuery('#element').data('events'); 

तुम भी ऐसा कर सकते हैं:

jQuery.each(jQuery('#element').data('events'), function(i, event){ 
    jQuery.each(event, function(i, eventHandler){ 
     console.log("The handler is " + eventHandler.toString()); 
    }); 
}); 
संबंधित मुद्दे