2011-06-24 16 views
55

मैं बहुत की तरह, jQuery के मंडराना के लिए तर्क के रूप में दो अनाम प्रक्रियाएं पास करना चाहते हैं:कॉफ़ीस्क्रिप्ट में तर्क के रूप में दो अज्ञात कार्यों को कैसे पास किया जाए?

$('element').hover(
    function() { 
    // do stuff on mouseover 
    }, 
    function() { 
    // do stuff on mouseout 
    } 
); 

यह सिर्फ एक आसान है - hover -> - लेकिन दो के लिए CoffeeScript में उचित सिंटैक्स क्या है? मैंने ...hover ->, ...hover(->... इत्यादि की कोशिश की लेकिन मुझे उपर्युक्त संरचना नहीं मिलती।

+0

नाम आपकी अनाम कार्य करता है। इसे अभी करो। आपके पास उचित नाम नहीं हैं, इसलिए उन्हें 'f' और 'g':' f = (...) -> ... ',' g = ...' कहें। फिर '($ 'तत्व')। होवर एफ, जी'। इतना सरल, इतना अभिव्यक्तिपूर्ण। – flow

उत्तर

24

अज्ञात कार्यों के आसपास कोष्ठक रखें।

+0

मैं कसम खाता हूं कि मैंने ऐसा किया - मैं होवर के साथ क्या कह रहा था (-> - लेकिन अभी यह फिर से किया और काम किया। धन्यवाद! – glortho

+1

हालांकि यह ध्यान दिया जाना चाहिए कि होवर और पैराथेसिस के बीच बिल्कुल शून्य सफेद जगह है। $ (@)। होवर()! = $ (@)। होवर() अन्यथा, आउटपुट को पैराथेसिस के दूसरे सेट में लपेटा जाएगा। –

+1

बस न कहें, दिखाएं। –

52

मुझे लगता है कि समस्या एकल लाइन टिप्पणियों // का उपयोग कर झूठ बोल रही है। /* .. */ में संलग्न सिंगल-लाइन टिप्पणियां ठीक काम करने लगती हैं। टिप्पणी के अलावा कुछ और समकक्ष उदाहरण यहां दिया गया है।

$('element').hover(
    -> console.log("first") 
    -> console.log("second") 
) 

या /* .. */ का उपयोग कर टिप्पणियों के साथ।

$('element').hover(
    -> /* first */ 
    -> /* second */ 
) 

आप Try CoffeeScript टैब के अंतर्गत इन उदाहरणों की कोशिश कर सकते हैं। कॉफीस्क्रिप्ट फ़ंक्शन की अंतिम अभिव्यक्ति को वापस करने के लिए एक रिटर्न स्टेटमेंट जोड़ता है। आप नंगे हड्डियों कार्य करता है जो कुछ नहीं करते हैं और अंत में एक return शामिल नहीं है चाहता था, तो कोशिश:

$('element').hover(
() -> 
() -> 
) 
// $('element').hover(function() {}, function() {}); 
+1

अगर कोई इस पर ठोकर खा रहा है: सावधान रहें: यहां एक जगह डालने की सावधानी बरतें: 'होवर (', आप अतिरिक्त कोष्ठक के साथ समाप्त हो जाएंगे। – punund

21

एक और तरीका है फोन करने वाले समारोह के बाद बैकस्लैश उपयोग करने के लिए है, अल्पविराम सही ढंग से इंडेंट किया जाना चाहिए।

$('element').hover \ 
    -> # do stuff on mouseover 
    , 
    -> # do stuff on mouseout 
+0

धन्यवाद, \ जाने के लिए बहुत अच्छा है। जबकि लंबी लाइनों में , हमें खोजने और खोजने की आवश्यकता नहीं है)। साथ \ का उपयोग करना वास्तव में सरल है। मुझे फिर से उपयोग करते समय jquery लगता है। –

8

कोष्टक या बैकस्लैश के बिना:

f -> 
    0 
, -> 
    1 

आउटपुट पर 1.7.1:

f(function() { 
    return 0; 
}, function() { 
    return 1; 
}); 
संबंधित मुद्दे

 संबंधित मुद्दे