Rails 4:如何在Turbo-Links中使用$ {document).ready()

JavaScript

伽罗L

2020-03-16

尝试以“ rails方式”组织JS文件时,我在Rails 4应用程序中遇到了问题。它们以前分散在不同的视图中。我将它们组织到单独的文件中,并通过资产管道进行编译。但是,我刚刚了解到,在打开Turbo链接时,jQuery的“就绪”事件不会在随后的点击中触发。首次加载页面时,它可以工作。但是,当您单击链接时,其中的任何内容ready( function($) {都不会执行(因为该页面实际上不会再次加载)。好的解释:在这里

所以我的问题是:在涡轮链接打开时,确保jQuery事件正常工作的正确方法是什么?您是否将脚本包装在特定于Rails的侦听器中?或者,也许rails具有某种使它不必要的魔力?该文档对如何工作有点含糊不清,尤其是在通过清单(如application.js)加载多个文件方面。

第1775篇《Rails 4:如何在Turbo-Links中使用$ {document).ready()》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
飞云达蒙 2020.03.16

以上都不适合我,我通过不使用jQuery的$ {document).ready来解决此问题,而是使用addEventListener来解决。

document.addEventListener("turbolinks:load", function() {
  // do something
});
神无蛋蛋 2020.03.16

您必须使用:

document.addEventListener("turbolinks:load", function() {
  // your code here
})

来自turbolinks doc

ADavaid 2020.03.16

我刚刚了解了解决此问题的另一种选择。如果加载jquery-turbolinks宝石它将绑定Rails的Turbolinks事件的document.ready事件,这样你就可以用通常的方式写你的jQuery。您只需在js清单文件(默认为:)jquery.turbolinks之后添加即可jqueryapplication.js

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android