我怀疑我要描述的问题是由Turbolinks引起的,但我不知道如何解决。我正在使用Rails 4,Turbolinks 3.0和jquery.turbolinks。假设有以下CoffeeScript:

alertClicked = ->
  alert 'Clicked'

$ ->
  $(document).on 'click', '.foo', -> alertClicked()


当我第一次加载页面并单击“ .foo”时,我收到一个警报。如果我访问链接并再次单击“ .foo”,我现在会收到两个警报。另一个链接访问导致三个警报,依此类推。我想,Turbolinks会在每个请求中获取CoffeeScript资产,并且它们会累积,以便多次执行同一脚本。但是,至少在Chrome中,当我转到“开发工具”->“源”时,只能看到文件的单个副本。

有谁知道可能是什么问题?

最佳答案

好的,例如jquery.turbolinks README points out


  您应该将事件绑定在$(function())块之外。这将确保您的事件仅绑定一次。


遵循此建议,我的示例如下所示:

alertClicked = ->
  alert 'Clicked'

$(document).on 'click', '.foo', -> alertClicked()


一切都按预期进行。

关于javascript - 每次请求都会获取JavaScript Assets ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35385263/

10-12 00:07
查看更多