【发布时间】:2016-02-13 20:59:10
【问题描述】:
我怀疑我要描述的问题是由 Turbolinks 引起的,但我不知道是怎么回事。我正在使用 Rails 4、Turbolinks 3.0 和 jquery.turbolinks。假设有这个 CoffeeScript:
alertClicked = ->
alert 'Clicked'
$ ->
$(document).on 'click', '.foo', -> alertClicked()
当我第一次加载页面并单击“.foo”时,我会收到一个警报。如果我访问一个链接并再次单击“.foo”,我现在会收到两个警报。另一个链接访问会导致三个警报,依此类推。我想,Turbolinks 会在每个请求上获取 CoffeeScript 资产并累积它们,以便多次执行相同的脚本。但是,至少在 Chrome 中,当我转到 Dev Tools -> Source 时,我只能看到文件的单个副本。
有人知道问题可能是什么吗?
【问题讨论】:
-
尝试在 .on( 之前添加 .off('click')
-
@DenizEng 好的,所以这行得通,但你能解释一下为什么吗?这不只是一种解决方法还是预期的行为?它会影响在应用程序的其他页面上起作用的其他 javascript 吗?谢谢。
-
您多次绑定事件处理程序。
标签: javascript ruby-on-rails coffeescript turbolinks