我怀疑我要描述的问题是由Turbolinks造成的,但我不知道如何。我正在使用Rails 4,Turbolinks 3.0和jquery.turbolinks。假设有这个CoffeeScript:
alertClicked = ->
alert 'Clicked'
$ ->
$(document).on 'click', '.foo', -> alertClicked()
当我第一次加载页面并点击“.foo”时,我收到一条提醒。如果我访问链接并再次单击“.foo”,我现在会收到两个警报。另一个链接访问导致三个警报等。我想,Turbolinks会在每次请求时获取CoffeeScript资产并累积,以便多次执行相同的脚本。但是,至少在Chrome中,当我去开发工具 - >来源我只看到文件的单个副本。
有谁知道问题可能是什么?
答案 0 :(得分:0)
O.K。,以及jquery.turbolinks README points out:
您应该在$(function())块之外绑定您的事件。这将确保您的活动只会被绑定一次。
遵循这个建议,我的例子如下:
alertClicked = ->
alert 'Clicked'
$(document).on 'click', '.foo', -> alertClicked()
一切都按预期工作。