我使用的是默认 Turbo 安装的 Rails 7。我还想使用 Materialise CSS 和 jQuery。 jQuery $(document).ready... 函数在第一页加载时工作,但之后就不再工作。
这个问题已被报告 100 次,但没有一个解决方案能帮我解决。
这是我的application.js:
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails"
import "controllers"
$(document).ready(function(){
$('.sidenav').sidenav();
console.log('Turbolinks finished loading the page');
});
我的应用程序标题:
<head>
<title>Remind</title>
<%= favicon_link_tag asset_path('favicon.ico') %>
<meta name="viewport" content="width=device-width,initial-scale=1">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
<%= javascript_importmap_tags %>
</head>
第一次工作正常,但由于涡轮没有重新加载磁头,因此之后就无法工作。 注意:建议使用 document.addEventListener('turbolinks:load',... 的解决方案根本不起作用!
我即将从应用程序中删除 Turbo。
turbolinks
不是turbo
:
document.addEventListener("turbo:load", function() {
$('.sidenav').sidenav();
console.log('Turbo finished loading the page');
})
https://turbo.hotwired.dev/handbook/building#installing-javascript-behavior