2011-09-07 83 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

相关问题