Rails 4 - 导航到另一个页面后jQuery没有加载

时间:2015-09-17 17:27:28

标签: jquery html ruby-on-rails

我有一个在$(document).ready(function() {});上运行的javascript文件,这个工作正常,直到我导航到网站上的另一个页面,然后返回到原始页面。一旦我返回,jQuery就会停止运行。

我最初通过在特定页面的主体中包含<%= javascript_include_tag "xyz" %>来修复此问题,但这导致js文件加载两次导致事件在发生时触发两次(通常相互抵消)。

有关如何在不加载js文件两次的情况下修复此错误的任何想法?为了记录,我尝试了其他活动,例如load pageinit等。

的application.js

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require_tree .
//= require bootstrap-sprockets
//= require owl.carousel
//= require moment
//= require bootstrap-datetimepicker
//= require jquery-ui
//= require turbolinks

testing.js

$(document).ready(function() {
    $(".glyphicon-remove").on("click", function(e) {
        prevAngle = angle;
        angle +=45;

        $(this).animateRotate(angle, prevAngle, 1000);
        e.preventDefault();

        $('.instructions').find('h1').toggleClass('smallfont', 1000);
        $(this).parent().toggleClass("btn-sm");

        if ( $(".instructions").hasClass("isDown") ) {
            $('.instructions').animate({
                top: '30%',
                width: '50%',
                left: '25%'
            }, 1000);
        } else {
            $('.instructions').animate({
                top: '94%',
                width: '100%',
                left: '0',
            }, 1000);
        }

        $(".instructions").toggleClass("isDown");
        $('.instructions').toggleClass('instructions-small');
        $('.instructions').toggleClass('instructions-min');
    });
});

application.html.erb

<head>
  <title><%= yield(:title) %> | Boston EDM Show Rewards</title>
  <%= favicon_link_tag 'favicon.ico' %>
  <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
  <%= csrf_meta_tags %>
</head>

1 个答案:

答案 0 :(得分:0)

听起来像Turbolinks问题。删除Turbolinks,或添加jquery-turbolinks gem。不要忘记将jquery.turbolinks添加到a​​pplication.js文件中。

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