Rails 关于 coffescript 的诡异问题。

bony · 2012年07月14日 · 最后由 bony 回复于 2012年07月15日 · 3451 次阅读

我一直都直接用 js,最近想尝试一下在新项目里有 coffee。就遇到一个诡异的问题。
我给 button 添加了一个 click 方法

$("#btn_test").click () ->
  alert("Hello")
  return false

然后用浏览器能看到 resources 里已经载入了这个 js

(function() {

  $("#btn_test").click(function() {
    alert("Hello");
    return false;
  });

}).call(this);

看上去一切良好,没问题,然后我点击的了 button。什么事就没有发生。诡异诡异。
如果我把这段生成的 js 在浏览器的 console 里执行一下,然后再点按钮就没问题。
这个到底是为什么呢? 我 js 很水。所以有点手足无措,不知道发生了什么,前来求助。

把生成的 js 代码替换掉 coffee 的,然后看一下是否正常。 如果不正常的话应该是 js 执行的时机不对吧。

document 没 ready

#2 楼 @fredwu 我为我的 js 知识之匮乏感到羞愧!!thx.

匿名 #5 2012年07月15日

试试这样:

$ ->
  $('#btn_test').click ->
    alert 'Hello'
    return false

首先当然是 document 没有 ready. 其次我觉得 click 后面不应该有小括号. 我是 coffeescript 的新手, 没经过验证.

另外就是,jQuery 里很少用 return false。一般都是传递 event 参数后用 event.preventDefault()

需要 登录 后方可回复, 如果你还没有账号请 注册新账号