0

我的 xxx.js.coffee 的内容:

$->
  $("#clk").click ->
    alert "hello world"

  $("#clk1").click ->
    alert "hello"

id“clk”在 index.html.erb 中,“clk1”在 show.html.erb 中

当我在“index.html.erb”中时,咖啡可以工作,但是当我跳到“show.html.erb”时,它不会提醒任何事情。

我该如何解决?

4

1 回答 1

3

当您编写 时$ ->,您可能已经知道您是在告诉 jQuery 运行函数DOMContentLoaded或类似事件。不幸的是,Rails 的更高版本默认启用了一个称为 turbolinks 的功能。此功能通过告诉浏览器在您单击新链接时不要重新加载页面,而是通过 ajax 获取新页面并用它替换当前正文来加速您的页面。

缺点是页面不会重新加载,并且您的“#clk1”处理程序注册将不会在show.html.erb显示时再次运行。正如 mu 已经在评论中指出的那样,请查看此问题的答案以使用正确的事件:

从另一个页面链接后,Rails 中的 JQuery 失败,适用于页面加载

就个人而言,我对任何新的 Rails 4 项目做的第一件事就是删除 turbolinks。我认为它带来的问题多于解决的问题。只需gem 'turbolinks'从您的Gemfile.

于 2013-09-10T04:03:43.630 回答