मैं इस class plugin का उपयोग कर JQuery में एक Mootools टूलटिप क्लास को फिर से लिखने की कोशिश कर रहा हूं। जब मेरी कक्षा को तुरंत चालू किया जाता है तो मैं एक ईवेंट श्रोता को एक लक्षित लिंक से जोड़ रहा हूं जो टूलटिप को फीका कर देगा।म्यूटूल के बराबर JQuery समतुल्य (यह)
घटना कॉलबैक में JQuery घटना के लक्ष्य पर "यह" कीवर्ड निर्दिष्ट करता है, इसलिए कक्षा के गुणों का संदर्भ देने के लिए "इस" को सेट करने के लिए क्लास के गुणों का संदर्भ रखने के लिए मैं() "का उपयोग कर रहा हूं। यह स्पष्ट रूप से Mootools के आसान bind() फ़ंक्शन के JQuery में समकक्ष है।
दुर्भाग्यवश जब मैं लागू करता हूं() मैं कॉलबैक के ईवेंट पैरामीटर को खो देता हूं। उदाहरण के लिए, इस बिट में मुझे दूसरी पंक्ति पर "ई अनिर्धारित" त्रुटि मिलती है।
this.target.bind('click', function(e){
e.preventDefault();
var tip = this.opts.tip;
tip.fadeOut(500, function(){
tip.bind('click', function(){
showing = false;
})
});
}.apply(this))
क्या मुझे यहां एक चाल याद आ रही है? क्या कोई इस मुद्दे के आसपास एक रास्ता जानता है?
धन्यवाद फ्रेड
डिमिटार आप जेएस के चलने वाले विश्वकोष हैं! विस्तृत स्पष्टीकरण के लिए धन्यवाद।इस स्थिति में संदर्भ का आपका सुझाव सबसे अच्छा प्रतीत होता है, इसलिए मैं ऐसा करूंगा: '\t var self = this; \t this.target.bind ('क्लिक', समारोह (ई) { \t \t e.preventDefault(); \t \t self.toggleTip(); \t}) ' मेरी init विधि, में जहां toggleTip () एक अलग क्लिक कॉलबैक है। महान सलाह, धन्यवाद! –
@ डिमिटार: वास्तव में बहुत अच्छा काम करता है। thnx। (एट) सभी: ध्यान दें कि कार्यात्मक प्रोग्रामिंग की इस तकनीक को करीइंग (http://www.dustindiaz.com/javascript-curry/) कहा जाता है। jQuery में विधि नाम 'बाइंड' का समान प्रोटोटाइप एक्सटेंशन है जो शायद कुछ उलझन में है क्योंकि इसका उपयोग गैर-फ़ंक्शंस को संभालने और घोषित करने के लिए किया जाता है। JQuery में इसी उद्देश्य के लिए $ .ajax में संदर्भ का भी उपयोग किया जाता है। –