JQuery只能在Rails 4应用程序的页面刷新中加载

我创build了一个Rails 4应用程序,并添加了一个图像popup效果的fancybox库。 它工作正常,但只有当页面正在刷新。 如果页面没有被用户刷新,那么jquery根本不起作用。 我试图用小的jquery方法来testing它,但所有的工作只能在页面刷新后。 我也使用twitter引导。

我的资产/ application.js文件:

//= require jquery //= require jquery_ujs //= require fancybox //= require twitter/bootstrap //= require turbolinks //= require_tree . $(document).ready(function() { $(".fancybox").fancybox(); $("#hand").click(function(){ if($("#check6").is(':visible')) { $("#check6").hide(); } else { $("#check6").show(); } }); }); 

好吧,我想我明白你的问题,足以提供一个答案。 关于使用turbolinks的事情是,大多数绑定到文档就绪事件的插件和库停止工作,因为turbolinks阻止浏览器重新加载页面。 有窍门来解决这些问题,但解决它的最简单的方法是使用jquery.turbolinks 。

要使用它,只需将其添加到您的Gemfile

 gem 'jquery-turbolinks' 

这和你的assets/javascripts/application.js文件是一样的:

 //= require jquery.turbolinks 

你应该很好走。

仅供参考 :您并不需要使用turbolink,但它是有用的,它可以通过避免整个页面刷新来提高请求速度。 Turbolinks通过AJAX获取您点击的链接的内容,并在同一页面上呈现,从而消除重新加载资产(JS和CSS)的开销。 尽量让你的网页使用它。 使用前段的库,我没有真正的问题。 您网页上的CSS和JS越多,使用turbolinks所获得的改进就越大。

伊恩有一个很好的答案,这是一个附加的东西(在写作的时候,我不会让任何人评论)。

https://github.com/rails/turbolinks/#jqueryturbolinks

 Add the gem [gem 'jquery-turbolinks'] to your project, then add the following line to your JavaScript manifest file, after jquery.js but before turbolinks.js: //= require jquery.turbolinks 

在我没有添加require jquery.turbolinks在列表中的正确位置之前,所以这是有点挑剔。 然后我加了一个新的方法,我希望它能更好地工作。

除非我同时遵循CodeWalrus和Ian的答案,否则我无法继续工作,但是对我来说,还有更多。 正如jquery.turbolinks自述文件中所描述的 ,顺序必须非常具体。

 //= require jquery //= require jquery.turbolinks //= require jquery_ujs // // ... your other scripts here ... // //= require turbolinks 

此外, 如上所述 ,如果您已将应用程序JavaScript链接放在页脚中以实现速度优化,则需要将其移至<head>标记中,以便在<body>标签。

Turbolinks是在这里的问题.Turbolinks被添加到轨道上,以提高网页的性能。我有这个解决scheme工作

<%= link_to "Create New Form", sampleform_path, 'data-no-turbolink' => true %>

更多的细节请参考这个