2

我正在使用 Rails 4。我的这个片段在没有turbolinks的情况下shared.js.coffee可以正常工作:

jQuery ->
  $('input.autocomplete,textarea.autocomplete').each (index, item) =>
    sel = $(item)
    sel.autocomplete
      source: sel.data('autocomplete-source')
      minLength: 1

但是当我使用Turbolinks时,它只适用于页面刷新。浏览网站后它不起作用。

我已经阅读了Rails 4、Turbolinks 和 jQuery 中的委托事件处理,所以我知道出了什么问题,但我还不确定如何解决这个问题。

并且,一个相关的问题:如果jQuery UI 自动完成插件- 或者就此而言,一般的插件 - 是/被设计为与 Turbolinks 一起使用,任何人都可以明确评论吗?

4

2 回答 2

2

使用jQuery Turbolinks

“如果你有一个包含大量$(el).bind(...)Turbolink 的大型代码库,你会感到惊讶。你的大部分 JavaScript 将停止以通常的方式工作。这是因为你绑定事件的节点不再存在。”

用法:

# Gemfile:
gem 'jquery-turbolinks'

# JavaScript manifest file:
//= require jquery.turbolinks

也许,在某些时候,jQuery$.widget函数会提供一个选项来进行不同的绑定,但在那之前,这是可行的。不需要对 Javascript 进行其他更改。

于 2013-04-11T23:32:19.080 回答
2

我最近在使用 Rails 5 和最新版本的 turbolinks 时遇到了这个问题(截至 2017 年 8 月 24 日)

我有类似的东西。我的问题是使用我的应用程序导航到另一个页面并使用自动完成功能。它没有用。经过一些研究,我发现添加

$(document).addEventListener('turbolinks:load', function(){
 // your code here
}

对我

应用程序/资产/javascripts/application.js

您可以在此处阅读有关 turbolink 的更多信息:turbolinks

我希望这对其他人有帮助。

于 2017-08-24T21:13:28.583 回答