除非我刷新,否则javascript不会加载

时间:2016-08-01 16:45:13

标签: javascript html ruby-on-rails

我在$(document).ready()中有一些jquery,但是除非我刷新页面,否则这个jquery代码不会在我的页面上运行。然后它适用于每次后续刷新。为什么会这样?

我只是放入javascript和html标签,但我正在使用rails应用程序,不确定是否会使事情变得复杂。

2 个答案:

答案 0 :(得分:1)

根据您的turbolinks版本,您必须使用正确的语法来覆盖文档加载事件。对于turbolinks 5:

而不是

$(document). ready(function () {
....
})

使用

var documentready = function(){

}
$(document). on('turbolinks:load',  documentready); 

在刷新时,这将优雅地回退到文档就绪事件。

为什么这有必要?

Turbolinks绑定位置更改(如单击链接)并使用Ajax加载部分。该文件未加载。此外,它操纵浏览器的历史记录以记录访问。

因此,每次访问都不会加载资产。快速。这就是为什么文档就绪不会绑定所有事件,除非所有侦听器都在主体或文档下定位(例如$("body").on("click","selector",function()...而不是$("selector").on('click', function()...

答案 1 :(得分:0)

出现此问题是因为旧版turbolinks中的某些关键事件与新的turbolinks 5不兼容。

我建议下载gem jquery-turbolinks,确保要求application.js

//= require jquery
//= require jquery.turbolinks
......

和兼容性脚本。您可以找到脚本here,只需在compatibility.coffee下创建assets/javascripts

这将允许您使用旧语法。 $(document).ready...