Ruby on rails 4.0 + javascript无法加载

我有一个名为“front.js”的javascript文件我从“application.js”加载,像往常一样使用此代码:

//= require front 

在“front.js”里面,我想要在文档准备就绪时启动许多function:

 $(document).ready(function() { $("#test").click(function(event){ ... }); }); 

但问题是“front.js”仅在我手动刷新页面时加载(ctrl + r / f5)而不是当我从一个页面移动到另一个页面时,所以我的javascript代码无法按需执行。 也许这来自turbolinks,我不知道如何处理这个问题。 当我将脚本直接放在html文件中时,它可以工作,但它绝对不是正确的做法。

有人可以帮我吗?

有三种方法可以做到这一点。

一个。 您可以将jquery代码包装在函数中,然后在页面加载时调用该函数。 如果您的function准备就绪,那么您可以:

 $(document).ready(ready); $(document).on('page:load', ready); 

湾 您可以使用jquery的直播活动或“on”活动:

 $(document).on("click","#test",function(){ // your code }); 

C。 您可以使用jquery-turbolinks gem将Rails Turbolink事件绑定到document.ready事件,这样您就可以按照常规方式编写jQuery。 有关更多信息,请参阅此处

这是由于turbolinks,而是这样做

 var ready; ready = function() { $("#test").click(function(event){ ... }); }; $(document).ready(ready); $(document).on('page:load', ready); 

在我的项目中使用基础时遇到了同样的问题,你可以通过不需要在application.js文件中使用turbolink来禁用turoblinks,它应该可以解决问题。