2014-11-02 66 views
0

我已经在轨道下面的JavaScript代码项目的.js刷新在轨的页面文件后,只加载

// app/assets/javascript/simple_effects.js 

$(function() { 
    // Hide completed tasks when checkbox is clicked. projects/show 
    $('#hide-completed').click(function() { 
    $('.task-completed').toggle(); 
    }); 
    // Change label to checkbox that hides completed tasks. project/show 
    $('#hide-completed').change(function(){ 
    var c = this.checked ? ' Show completed tasks' : ' Hide completed tasks'; 
    $('#checkbox-label').text(c); 
    }); 

}); 

的代码,当我进入网页,但刷新后,才不会触发。我正在使用turbolinks。

我意识到这个问题: Rails loading my javascript only after a page reload 但我真的不知道这个解决方案是否可以用于我的情况。 谢谢!

编辑: 这是我的application.js文件

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require bootstrap-sprockets 
//= require_tree . 
+0

你可以发表你的'application.js'文件? – mohameddiaa27 2014-11-02 00:42:11

回答

5

如果你有很多现有的JavaScript结合上jQuery.ready()的元素,你可以拉jquery.turbolinks库到您的项目,将当Turbolinks触发页面:加载事件时触发ready()。它可能会恢复某些库的功能。

宝石添加到您的项目,

gem 'jquery-turbolinks' 

然后添加下面一行到你的JavaScript清单文件的jquery.js之后,但之前turbolinks.js:

//= require jquery.turbolinks 

application.js

//= require jquery 
//= require jquery_ujs 
//= require jquery.turbolinks 
//= require turbolinks 
//= require bootstrap-sprockets 
//= require_tree . 
+0

该应用程序抛出一个错误:找不到文件'jquery.turbolinks' – 2014-11-02 00:51:27

+0

添加此gem后,您必须重新启动您的rails服务器。否则,你会得到La Murga得到的错误。 – 2015-07-27 17:21:52

+0

请注意,这不**工作于turbolinks 5+,正如他们的github页面所述:https://github.com/kossnocorp/jquery.turbolinks – LPrc 2017-12-06 09:29:29

0

如果您使用turbolinks 5+,jquery-turbolinks不起作用ymore(请参阅https://github.com/kossnocorp/jquery.turbolinks)。

相反,您可以将代码包装到函数$(document).on "turbolinks:load", ->中。

E.g.

$ -> 
    $("#add-artwork-btn").on 'click', -> 
    div = $("#add-artwork-div") 
    div.toggle(200) 

变得

$(document).on "turbolinks:load", -> 
    $ -> 
    $("#add-artwork-btn").on 'click', -> 
     div = $("#add-artwork-div") 
     div.toggle(200)