Rails 5:如何将 $(document).ready() 与 turbo-links 一起使用
IT技术
javascript
jquery
ruby-on-rails
turbolinks
ruby-on-rails-5
2021-01-30 01:54:11
6个回答
ready
您不需要监听事件,而是需要在每次页面访问时连接到 Turbolinks 触发的事件。
不幸的是,Turbolinks 5(这是出现在 Rails 5 中的版本)已经被重写,并且没有使用与之前版本的 Turbolinks 相同的事件名称,导致提到的答案失败。现在有效的是监听turbolinks:load事件,如下所示:
$( document ).on('turbolinks:load', function() {
console.log("It works on each visit!")
})
原生JS:
document.addEventListener("turbolinks:load", function() {
console.log('It works on each visit!');
});
在 rails 5 中,最简单的解决方案是使用:
$(document).on('ready turbolinks:load', function() {});
而不是$(document).ready
. 奇迹般有效。
这是我的解决方案, override jQuery.fn.ready
,然后$(document).ready
无需任何更改即可工作:
jQuery.fn.ready = (fn)->
$(this).on 'turbolinks:load', fn
这是对我有用的解决方案,从这里开始:
安装
gem 'jquery-turbolinks'
将此 .coffee 文件添加到您的应用程序:https : //github.com/turbolinks/turbolinks/blob/master/src/turbolinks/compatibility.coffee
将其命名为 turbolinks-compatibility.coffee
在 application.js
//= require jquery //= require jquery_ujs //= require jquery.turbolinks //= require turbolinks //= require turbolinks-compatibility
其它你可能感兴趣的问题