gpt4 book ai didi

javascript - Rails 4 : how to use $(document). ready() 与 turbo-links

转载 作者:IT老高 更新时间:2023-10-28 11:01:40 25 4
gpt4 key购买 nike

在尝试“以 Rails 方式”组织 JS 文件时,我在 Rails 4 应用程序中遇到了问题。它们以前分散在不同的 View 中。我将它们组织成单独的文件并使用 Assets 管道编译它们。然而,我刚刚了解到,当 turbo-linking 打开时,jQuery 的“就绪”事件不会在随后的点击中触发。第一次加载页面时它可以工作。但是当你点击一个链接时,ready(function($){ 内的任何东西都不会被执行(因为页面实际上并没有再次加载)。很好的解释:here

所以我的问题是:在 turbo-links 开启时,确保 jQuery 事件正常工作的正确方法是什么?您是否将脚本包装在特定于 Rails 的监听器中?或者也许 Rails 有一些魔力让它变得不必要?文档对于这应该如何工作有点含糊,尤其是关于通过诸如 application.js 之类的 list 加载多个文件。

最佳答案

这就是我所做的... CoffeeScript :

ready = ->

...your coffeescript goes here...

$(document).ready(ready)
$(document).on('page:load', ready)

最后一行监听页面加载,这是 turbo 链接将触发的。

编辑...添加 Javascript 版本(根据请求):

var ready;
ready = function() {

...your javascript goes here...

};

$(document).ready(ready);
$(document).on('page:load', ready);

Edit 2...对于 Rails 5 (Turbolinks 5) page:load 变为 turbolinks:load 甚至会在初始时触发加载。所以我们可以做到以下几点:

$(document).on('turbolinks:load', function() {

...your javascript goes here...

});

关于javascript - Rails 4 : how to use $(document). ready() 与 turbo-links,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com