我如何用CoffeeScript写这个?

时间:2012-11-18 15:36:40

标签: jquery ruby-on-rails coffeescript waitforimages

我在第一个Rails应用程序中遇到了CoffeeScript问题。我正在使用waitForImages jQuery插件,该插件保存在名为waitforimages.jquery.js的单独文件中。 Rails自动创建home.js.coffee,我想在其中包含以下jQuery代码段:

$('#fullbleed').waitForImages(function() {
    $(this).fadeIn(3000);
});

但是我怎么用CoffeeScript表示法写这个呢?

更新

现在情况很好,所以我想我会发布我的最终代码。其中一个问题是我没有在 home.js.coffee之前加载waitForImages插件

CoffeeScript的:

$(document).ready -> $('#fullbleed').waitForImages -> $(@).fadeIn 3000

HTML:

<!DOCTYPE html>
<html>
<head>
  <title>Title</title>
  <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
  <script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
  <script src="/assets/jquery.waitforimages.js?body=1" type="text/javascript"></script>
  <script src="/assets/home.js?body=1" type="text/javascript"></script>
</head>
<body>
...
</body>
</html>

3 个答案:

答案 0 :(得分:8)

使用-> ...代替function(){ ... }。或者,您也可以将this@交换。

$('#fullbleed').waitForImages ->
    $(@).fadeIn(3000)

如果你真的想保存字符,那么你也可以省略最后两个括号,并得到:

$('#fullbleed').waitForImages -> $(@).fadeIn 3000

答案 1 :(得分:3)

根据非常有用的http://js2coffee.org

$("#fullbleed").waitForImages ->
  $(this).fadeIn 3000

答案 2 :(得分:2)

$('#fullbleed').waitForImages ->
  $(@).fadeIn 3000

甚至:

$('#fullbleed').waitForImages ->$(@).fadeIn 3000