And*_*ewH 78 javascript jquery ruby-on-rails turbolinks ruby-on-rails-5
Turbolinks可防止正常$(document).ready()
事件在初始加载之外的所有页面访问时触发,如此处和此处所述.但是,链接答案中的所有解决方案都不适用于Rails 5.如何像以前的版本一样在每次访问页面上运行代码?
And*_*ewH 154
而不是听取ready
事件,你需要参与Turbolinks为每次页面访问而发起的事件.
不幸的是,Turbolinks 5(这是Rails 5中出现的版本)已被重写,并且不使用与之前版本的Turbolinks相同的事件名称,导致提到的答案失败.现在有效的是收听turbolinks:加载事件如下:
$( document ).on('turbolinks:load', function() {
console.log("It works on each visit!")
})
Run Code Online (Sandbox Code Playgroud)
小智 42
原生JS:
document.addEventListener("turbolinks:load", function() {
console.log('It works on each visit!');
});
Run Code Online (Sandbox Code Playgroud)
这是我的解决方案,覆盖jQuery.fn.ready
,然后$(document).ready
工作没有任何改变:
jQuery.fn.ready = (fn)->
$(this).on 'turbolinks:load', fn
Run Code Online (Sandbox Code Playgroud)
在rails 5中,最简单的解决方案是使用:
$(document).on('ready turbolinks:load', function() {});
Run Code Online (Sandbox Code Playgroud)
代替$(document).ready
。奇迹般有效。
归档时间: |
|
查看次数: |
45307 次 |
最近记录: |