我的 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”时,它不会提醒任何事情。
我该如何解决?
我的 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”时,它不会提醒任何事情。
我该如何解决?
当您编写 时$ ->
,您可能已经知道您是在告诉 jQuery 运行函数DOMContentLoaded
或类似事件。不幸的是,Rails 的更高版本默认启用了一个称为 turbolinks 的功能。此功能通过告诉浏览器在您单击新链接时不要重新加载页面,而是通过 ajax 获取新页面并用它替换当前正文来加速您的页面。
缺点是页面不会重新加载,并且您的“#clk1”处理程序注册将不会在show.html.erb
显示时再次运行。正如 mu 已经在评论中指出的那样,请查看此问题的答案以使用正确的事件:
从另一个页面链接后,Rails 中的 JQuery 失败,适用于页面加载
就个人而言,我对任何新的 Rails 4 项目做的第一件事就是删除 turbolinks。我认为它带来的问题多于解决的问题。只需gem 'turbolinks'
从您的Gemfile
.