我在 $(document).ready()
中有一些 jquery,但是除非刷新页面,否则此 jquery 代码不会在我的页面上运行。然后它会在每次后续刷新时起作用。为什么会这样?
我只是放入了 javascript 和 html 标签,但我正在 Rails 应用程序中工作,不确定这是否会让事情变得复杂。
最佳答案
根据您的 Turbolinks 版本,您必须使用正确的语法来覆盖文档加载事件。对于 Turbolinks 5:
而不是
$(document). ready(function () {
....
})
使用
var documentready = function(){
}
$(document). on('turbolinks:load', documentready);
刷新时,这将优雅地回退到文档就绪事件。
为什么这是必要的?
Turbolinks 绑定(bind)位置更改(如单击链接)并使用 Ajax 加载部分内容。该文档未加载。此外,它还操纵浏览器的历史记录来记录访问。
因此, Assets 不会在每次访问时加载。快速地。这就是为什么文档就绪不会绑定(bind)到所有事件,除非所有监听器都以正文或文档为目标(例如 $("body").on("click","selector",function()...
而不是 $("selector").on('click', function()...
关于除非刷新,否则 JavaScript 不会加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38704030/