在尝试使用"Rails方式"组织JS文件时,我在我的Rails 4应用程序中遇到了问题。这些文件以前分散在不同的视图中。我将它们整理成单独的文件,并使用资源管道进行编译。但是,我刚刚学到当开启Turbo-links时,jQuery的 "ready"事件不会在后续的点击中触发。第一次加载页面时它可以正常工作。但是当您单击链接时,任何在 ready( function($) {
内部的内容都不会被执行(因为实际上页面并没有重新加载)。详细解释请参考:这里。
所以我的问题是: 在开启Turbo-links的同时如何确保jQuery事件能够正常工作?您是否需要将脚本包装在Rails特定的侦听器中?或者说Rails有某种神奇的功能使其不必要?文档对于如何使用manifest(s)加载多个文件的方式有些模糊。
var ready = function() { ... } $(document).ready(ready)
表示在文档加载完成后运行ready
函数,而$(document).on('page:load', ready)
表示在页面重新加载时运行相同的函数。你的问题是是否需要考虑同时触发.ready
和'page:load'
的情况。 - emersonthisready
函数不会被调用两次。如果是强制刷新,只会触发ready
事件。如果是 turbolinks 加载,只会触发page:load
事件。在同一页中同时触发ready
和page:load
是不可能的。 - Christian$(document).on('page:load ready', ready);
第二个参数是一个简单的函数,该函数恰好被命名为“ready”,参考此答案的示例。 - ahnbizcad