Turbolinks prevents normal $(document).ready() events from firing on all page visits besides the initial load, as discussed here and here. None of the solutions in the linked answers work with Rails 5, though. How can I run code on each page visit like in prior versions?

推荐答案

Rather than listen to the ready event, you need to hook in to an event fired by Turbolinks for every page visit.

Unfortunately, Turbolinks 5 (which is the version that appears in Rails 5) has been re-written, and does not use the same event names as in previous versions of Turbolinks, causing the answers mentioned to fail. What works now is to listen to the turbolinks:load event like so:

$( document ).on('turbolinks:load', function() {
  console.log("It works on each visit!")
})

Jquery相关问答推荐

当父迪瓦是重复元素时,如何将一些子元素包裹在父迪瓦中

ASP.NET Core 8 MVC:从jQuery发布控制器中的所有值为空

Bootstrap 3模态框和video.js视频未正确调整大小

javascript 捕获浏览器快捷方式 (ctrl+t/n/w)

将 jquery 元素转换为 html 元素

在范围内设置文本

JQuery/Javascript:判断 var 是否存在

如何使用 jQuery 将分钟转换为小时/分钟并添加各种时间值?

jQuery绑定到粘贴事件,如何获取粘贴的内容

在 jQuery 中将 JSON 数组转换为 HTML 表

在 jQuery 中处理多个 ID

在完成前一个请求之前中止新的 AJAX 请求

jQuery.extend 和 jQuery.fn.extend 的区别?

JQuery Ajax Post 导致 500 内部服务器错误

如何从 jQuery UI datepicker 获取日期

Google 的 CDN 上的最新 jQuery 版本

什么时候应该使用 jQuery 的 document.ready 函数?

jQuery .each() 索引?

如何使用 bootstrap 中的 selectpicker 插件在 Select 时设置选定值

catch forEach 最后一次迭代