2011-09-07 88 views
4

我想將使用JavaScript編寫的jQuery函數轉換爲Coffeescript,該函數將兩個函數作爲參數。我是Coffeescript的新手,我有點卡在這裏。原始功能類似於:如何將帶有兩個函數參數的jQuery函數轉換爲Coffeescript

$('#target').toggle(function() { 
    alert('First handler for .toggle() called.'); 
}, function() { 
    alert('Second handler for .toggle() called.'); 
}); 

它在Coffeescript中的外觀如何?

+0

http://aaronrussell.co.uk/articles/using -coffeescript-with-jquery/ –

回答

8

一個簡單的方法來查看如何在咖啡文本實時工作是去official website並使用「Try Coffeescript」下拉窗格。我發現得到它的輸出與你想要的完全相同的代碼的一種方法是這樣做的:

$('#target').toggle -> 
    alert 'First handler for .toggle() called.' 
, -> 
    alert 'Second handler for .toggle() called.' 

試試看。它可能會感覺有點奇怪的代碼輸入到一個網站,但我已經肯定覺得它有用。

+0

謝謝!花費一點時間來適應CoffeeScript,但它仍然很性感! – acme

7

@ genericdave的回答是正確的。下面是另一種方法解決缺少括號的混淆你喜歡它我:

$('#target').toggle(
    -> alert('First handler for .toggle() called.'), 
    -> alert('Second handler for .toggle() called.') 
) 
+0

謝謝!這當然更具可讀性(至少當你是Coffeescript的新手時)。 – acme

1

也可以有兩全其美的:沒有括號像@ genericdave的回答和漂亮的格式像@ Domenic的。您必須使用換行符:\

當單行處理:

$('#target').toggle \ 
    -> alert "First handler for .toggle() called.", 
    -> alert "Second handler for .toggle() called." 

當有代碼的多行回調處理:

$('#target').toggle \ 
    -> 
     alert "1st handler. First line" 
     alert "1st handler. Second line" 
    ,-> 
     alert "2nd handler. First line" 
     alert "2nd handler. Second line" 
+0

但是,這不僅僅是像genericdave的答案一樣,只是使用alert函數的括號嗎? – acme

+0

我確實忘記刪除警報聲明中的括號,現在它已被編輯。否則\允許您在同一個縮進上使用箭頭。您不能將切換後的第一個 - >與沒有\的alert語句放在同一行。 – Jay

相關問題