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

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

我的资产/ 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>的内容之前加载,标签。

链接地址: http://www.djcxy.com/p/71255.html

上一篇: JQuery gets loaded only on page refresh in Rails 4 application

下一篇: how to run jquery code after content loads?