首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用coffeescript on rails 3.1注册Jquery单击事件

如何使用coffeescript on rails 3.1注册Jquery单击事件
EN

Stack Overflow用户
提问于 2011-10-06 08:33:20
回答 2查看 21.7K关注 0票数 16

我正在尝试做看起来很简单的事情,但由于某种原因,我无法做到这一点。我想将单击事件添加到我的tasks.js文件中的链接,如下所示:

代码语言:javascript
复制
$ ->
  $('.cancel_task').click -> 
    $('#task_form').toggle

这将呈现为:

代码语言:javascript
复制
(function() {
  $(function() {
    return $('.cancel_task').click(function() {
    return $('#task_form').toggle;
  });
});
}).call(this);

我想要的是:

代码语言:javascript
复制
$('.cancel_task').click(function()
{
  $('#task_form').toggle();
});

我如何使用coffescript和rails 3.1堆栈来实现这一点?

EN

回答 2

Stack Overflow用户

发布于 2011-10-06 09:02:10

咖啡应该将你所做的一切都包装在一个有限的范围内,这样你就不会用全局变量来填充世界。这很有用,除非你有,否则不要忽略它。在顶层,您可以使用this.something = "value"导出。

现在你上面的代码不能工作了,因为当没有参数时,函数调用需要一个paren。这将使两个snip-its在功能上相同。函数是JavaScript中的变量,所以它只是假设您想返回该函数,而不是不带括号的结果。

代码语言:javascript
复制
$ ->
  $('.cancel_task').click -> 
    $('#task_form').toggle()

最后,Coffee函数总是返回函数的最后一个值。这就是它的工作原理。所以不用担心return语句,你可以忽略结果。

票数 17
EN

Stack Overflow用户

发布于 2011-10-06 08:41:30

您发布的第二个代码片段是来自coffee的正确输出,并且您发布的第二个和最后一个代码片段(实际上)在功能上是等效的。如果您愿意,您可以使用coffee--bare选项(文档中有)来摆脱顶级闭包,但除此之外,您不应该担心CoffeeScript的输出,除非它会给您带来问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7669246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档