2012-01-15 5 views
20

पर JQuery के साथ गतिशील रूप से लोड किए गए ऑब्जेक्ट्स के लिए बाध्यकारी क्लिक घटनाएं कॉफ़ीस्क्रिप्ट में मेरी साइट के फ्रंट-एंड को फिर से लिखने पर काम करना। मैं समझता हूं कि एक वर्ग में एक क्लिक फ़ंक्शन कैसे बांधें।कॉफीस्क्रिप्ट -

$('.song').click -> 
    //code 

हालांकि, मैं गतिशील रूप से लोड की गई सामग्री के साथ कुछ समस्याओं में भाग रहा हूं। मैं जानता हूँ कि JQuery में, इस का हल तो जैसे "चालू" समारोह का उपयोग करने के होगा:

$(document).on('click', '.song', function(){ 
    //code 
}); 

लेकिन मैं यह कैसे Coffeescript करने के लिए अनुवाद पर अनिश्चित हूं। मैं इस धारणा के तहत हूं कि रॉकेट तीर -> जावास्क्रिप्ट में एक अज्ञात फ़ंक्शन में अनुवाद करता है, लेकिन यह फ़ंक्शन पैरामीटर में से एक के साथ कैसे काम करता है? मैंने कुछ अलग वाक्यविन्यासों की कोशिश की है और उनमें से कोई भी काम नहीं कर रहा है, धन्यवाद!

उत्तर

15
$(document).on('click', '.song', (-> 
    ### code ### 
)); 

इस जावास्क्रिप्ट वास्तविक रूप है:

$(document).on('click', '.song', (function() { 
    /* code */ 
})); 

ध्यान दें कि आप चाहते हो सकता है -> के बजाय => ऑपरेटर का उपयोग करने के लिए; डबल तीर का उपयोग करके ईवेंट हैंडलर को this बांधता है (jQuery के bind का उपयोग करने के बराबर)।

+0

@ एपेली, जबकि आपका संपादन भी एक संभावना है कि यह मेरी वरीयता नहीं है। फ़ंक्शन की सामग्री के आधार पर, सीएस को अंत खोजने में परेशानी होती है, जिसे ब्रेसिज़ को स्पष्ट रूप से डालने से हल किया जाता है। मुझे सीएस परेशानियों में अस्पष्टताएं मिलती हैं; उदाहरण के लिए '$ (दस्तावेज़) .on' 'इसे' आमंत्रित करने के बिना 'वापस लौटाता है,' $ (दस्तावेज़) .on' इसे आमंत्रित करता है, '$ (दस्तावेज़)। कुछ भी' इसे आमंत्रित करता है, और '$ (दस्तावेज़) कुछ भी 'परिणाम का आह्वान करेगा। तर्कों के लिए स्पष्ट ब्रेसिज़ का उपयोग करके यह मुसब्बर आईएमएचओ त्रुटियों से कम प्रवण होता है। इसलिए मैं वापस संपादित करूंगा। अपना खुद का पोस्ट करने के लिए स्वतंत्र महसूस करें - मैं इसे ऊपर उठाऊंगा। ;) – Lucero

+0

रोजर और क्षमा करें। यह स्पष्ट रूप से स्पष्ट संपादन प्रतीत होता है क्योंकि कोड निष्पादन आदेश स्पष्ट होने पर आप शायद ही कभी सीएस कोड को ब्रैकेट के साथ देखते हैं। इस तुच्छ उदाहरण में पसंद है। – Epeli

+0

@ एपेली, काफी मेला, यही कारण है कि मैंने खुद को समझाया। एक मॉड्यूलर एसपीए में चल रहे सीएस कोड की हजारों लाइनें होने और मेरे देवताओं को कुछ समझाए गए व्यवहार के साथ संघर्ष करने के लिए देखकर मैंने अपने संगठन में विधि आमंत्रण के लिए माता-पिता की आवश्यकता होने का निर्णय लिया है, साथ ही मैं 'डू' के उपयोग पर प्रतिबंध लगा रहा हूं '। यह वास्तव में कोड की गुणवत्ता को उच्च रखने में मदद करता है, खासकर कोड रखरखाव के दौरान। – Lucero

4

JS2Coffee सवालों के इन प्रकार के साथ मदद कर सकते हैं:

http://js2coffee.org/

आप के रूप में यह कभी कभी काफी मुश्किल जे एस कोड पर ठोकर, लेकिन यह आश्चर्य की बात सही है, js2coffee साथ एक छोटी सी सावधान रहना चाहिए, और यह होगा आम तौर पर कम से कम आपको बहुत करीब मिल जाता है।

21

आमतौर पर कॉफीस्क्रिप्ट में ब्रैकेट का उपयोग नहीं करते हैं यदि निष्पादन आदेश उनके बिना स्पष्ट है। तो यह इस तरह लिखा जा सकता है:

$(document).on 'click', '.song', -> 
    ### code ### 

लेकिन निश्चित रूप से उपयोग कोष्ठक हमेशा जब निष्पादन आदेश स्पष्ट नहीं है।

+0

यह ** ** उत्तर होना चाहिए! – mlt