我正在使用Rails 4.我的shared.js.coffee
的这个代码段工作正常没有 turbolinks:
jQuery ->
$('input.autocomplete,textarea.autocomplete').each (index, item) =>
sel = $(item)
sel.autocomplete
source: sel.data('autocomplete-source')
minLength: 1
但是当我使用Turbolinks时,它只适用于页面刷新。在浏览网站后它无效。
我已经阅读了Rails 4, Turbolinks, and Delegated Event Handling in jQuery,所以我知道出了什么问题,但我还不确定如何解决这个问题。
并且,一个相关的问题:任何人都可以肯定地评论jQuery UI autocomplete plugin - 或者就此而言,插件一般 - 是否设计用于Turbolinks?
答案 0 :(得分:2)
“如果你有一个包含大量
$(el).bind(...)
的大型代码库,那么Turbolink会让你感到惊讶。大部分JavaScripts将以通常的方式停止工作。这是因为你绑定事件的节点不再存在。”< / p>
用法:
# Gemfile:
gem 'jquery-turbolinks'
# JavaScript manifest file:
//= require jquery.turbolinks
也许,在某些时候,jQuery $.widget
函数将提供一个不同绑定的选项,但在此之前,这是有效的。不需要对Javascript进行其他更改。
答案 1 :(得分:1)
我最近在使用Rails 5和最新版本的turbolinks时遇到了这个问题(截至8/24/17)
我有类似的东西。我的问题是在使用我的应用程序并使用自动完成功能导航到另一个页面时。它没有用。经过一番研究,我发现添加了
$(document).addEventListener('turbolinks:load', function(){
// your code here
}
到我的
app / assets / javascripts / application.js
您可以在此处阅读有关turbolinks的更多信息:turbolinks。
我希望这有助于其他人。