如何使用Turbolinks 5运行$(document).on'ready'?

时间:2017-03-24 01:28:12

标签: ruby-on-rails coffeescript turbolinks

在Rails应用程序中,我有一个coffeescript函数,应该在DOM加载后运行

$(document).ready ->
  # do some stuff

过去我可以通过编辑如下来确保这些功能在Turbolinks页面刷新中也能正常工作

$(document).on 'ready page:change', ->
  # do some stuff

我刚刚升级到Rails 5和Turbolinks 5,这些功能不再被正确调用。

经过多次搜索,我尝试了很多变化,包括

$(document).on 'ready', ->
$(document).ready ->
$(document).on "turbolinks:load", ->
$(document).on "page:load", ->
$(document).on "page:change", ->
# and as suggested by the [Turbolinks readme][1]
document.addEventListener 'turbolinks:load', ->

我在安装了jquery.tubolinks时也尝试了这些,并且使用了turbolinks兼容性补丁建议here

我一定错过了一些明显的东西!在为页面加载和Turbolink加载加载DOM之后,确保函数运行的正确语法是什么?

1 个答案:

答案 0 :(得分:3)

根据official turbolinks github documentation

  

在许多情况下,您只需调整代码即可收听turbolinks:load事件,该事件会在初始页面加载时触发一次,并在每次Turbolinks访问后再次触发。

所以它希望这是纯粹的js:

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

或者像coffeescript中那样:

$(document).on 'turbolinks:load', ->
  # ...
  return