दिलचस्प पोस्ट
जावास्क्रिप्ट अलर्ट () विधि में एचटीएमएल टैग सभी डेवलपर्स के लिए एक Google मानचित्र कुंजी? कैसे जल्दी से एक जावास्क्रिप्ट वस्तु को साफ करने के लिए? मुझे "सिस्टम.IO.Compression" नामस्थान में "ज़िपफ़ाइल" वर्ग नहीं मिला मुख्य धागा निकास पर कार्यक्रम का समापन? वर्तमान चयनित आइटम को संरक्षित करते समय मूल्य के आधार पर एचटीएमएल के चयन के विकल्प को हल करने का सबसे कारगर तरीका क्या है? xcopy फ़ाइल, नाम बदलें, दबाएं "क्या xxx फाइल नाम निर्दिष्ट करता है …" संदेश वास्तविक समय पुश अधिसूचना के पास एंड्रॉइड समर्थन क्या है? सुरक्षित रूप से एक फाइल को कैसे लिखें? एंड्रॉइड लिस्ट दृश्य सेटसैलेक्शन () काम करने के लिए नहीं लगता है मैं वी.एस. 2012 आरसी में फिर से काम करने के लिए यूज़र टाइप सी # सिंटैक्स को हाइलाइट कैसे कर सकता हूं? एक async विधि के अंत में, क्या मुझे वापस आना चाहिए या इंतजार करना चाहिए? महीनों के बीच के महीनों में अंतर MySQL JSF में statelessness की उपयोगिता क्या है? आईफोन भाषण मान्यता एपीआई?

jQuery: ईवेंट हैंडलर्स को बाद में फिर से बाँधने के लिए खोलें

क्या किसी को पता है कि घटना के संचालकों को कैसे सेट करें, लेकिन बाद में उन्हें फिर से बाँधने के लिए उन्हें याद करें? कोई सुझाव?

Solutions Collecting From Web of "jQuery: ईवेंट हैंडलर्स को बाद में फिर से बाँधने के लिए खोलें"

आइटम के डेटा में एक घटना तत्व है इसे आपका आरंभ करना चाहिए, आप अपने तत्वों को पढ़ सकते हैं और बिना बाइनिंग से पहले एक सरणी में हैंडलर को स्टोर कर सकते हैं। टिप्पणी अगर आपको अधिक सहायता चाहिए मुझे $ .fn.clone विधि पढ़ने से यह विचार मिला है, इसलिए उस पर भी एक नज़र डालें।

$(document).ready(function() { $('#test').click(function(e) { alert('test'); var events = $('#test').data("events"); $('#test').unbind('click', events.click[0]); }); }); <a id="test">test</a> 

यहां यह कैसे प्राप्त किया जाता है, एक चयन पर restoreEvents storeEvents और एक restoreEvents तरीके प्रदान करता है। storeEvents घटनाओं की एक स्नैपशॉट लेता है उस समय इसे कहा जाता है। restoreEvents पिछले पिछले स्नैपशॉट को पुनर्स्थापित करता है बहाल करने के दौरान इसे बिना किसी बंधन के पैरामीटरिंग के लिए थोड़ा मोड़ना पड़ सकता है, शायद आप आखिरी स्नैपशॉट के बाद बाध्य घटनाओं को रखना चाहते हैं।

 (function($){ function obj_copy(obj){ var out = {}; for (i in obj) { if (typeof obj[i] == 'object') { out[i] = this.copy(obj[i]); } else out[i] = obj[i]; } return out; } $.fn.extend({ storeEvents:function(){ this.each(function(){ $.data(this,'storedEvents',obj_copy($(this).data('events'))); }); return this; }, restoreEvents:function(){ this.each(function(){ var events = $.data(this,'storedEvents'); if (events){ $(this).unbind(); for (var type in events){ for (var handler in events[type]){ $.event.add( this, type, events[type][handler], events[type][handler].data); } } } }); return this; } }); })(jQuery); 

JQuery 1.4.2+ के बाद से ईवेंट हैंडलर को कैसे संग्रहीत किया जाता है, यह प्रासंगिक लगता है:

मैंने पाया सबसे अच्छा तरीका घटना नाम स्थान का उपयोग करना था:

 var ary_handlers = [ fn_highlight, fn_onpress, fn_cleanup ]; for ( idx = 0; idx < ary_handlers.length; idx++ ){ $('#test').bind('click.foobar',ary_handlers[idx]); } // and then later: $('#test').unbind('.foobar'); 

उपरोक्त उदाहरण में, सभी फ़ूबार इवेंट अनबाउंड ध्यान दें कि अगर आपको फेंडर अनाज नियंत्रण की आवश्यकता है, तो आप प्रत्येक क्लिक हैंडलर को नामित कर सकते हैं और अपने हैंडलर के साथ संबंध बना सकते हैं:

 var ary_handlers = [ fn_highlight, fn_onpress, fn_cleanup ]; for ( idx = 0; idx < ary_handlers.length; idx++ ){ $('#test').bind('click.ns_' + String(idx), ary_handlers[idx]); } // and then later you could pick off a specific one to unbind $('#test').unbind('.ns_2'); 

अब प्रतिलिपि एवलेंट नामक एक अच्छा jQuery प्लगइन है, जो एक ऑब्जेक्ट से दूसरी ऑप्शन प्रतिलिपि बनाता है। यह बहुत आसानी से एक तत्व से "बचाने" घटनाओं के लिए इस्तेमाल किया जा सकता है और उन्हें बाद में वापस लाया जा सकता है। सिर्फ एक और विकल्प 🙂

किसी ईवेंट हैंडलर को बंद करने के लिए आपको हेन्डलर फ़ंक्शन को अबाइन () में पास करना होगा तो आपके पास पहले से हेन्डलर फ़ंक्शन है, आपको बस इतना करना है उसे याद रखना है।

आप event.handler पैरामीटर का उपयोग कर सकते हैं:

 $(document).ready(function() { $('#test').click(function(e) { e.preventDefault(); alert('test'); $('#test').unbind('click', e.handler); //Do Something... $('#test').click(); }); }); <a id="test">test</a> 

event.handler वर्तमान हैंडलर देता है जिसने ईवेंट प्राप्त किया है, इसलिए इसे छोड़कर आप अन्य संचालकों को रख सकते हैं

निक क्रोवर में jQuery 1.4.2+ के लिए सही उत्तर है । उन्होंने एक सहायक बेला भी शामिल है उनका समाधान आपको एक jQuery तत्व से जुड़ी सभी ईवेंट हैंडलर्स को पुनर्प्राप्त करने और यह पता लगाने की अनुमति देता है कि वे कौन से हैंडलर से जुड़े थे।