切换页面后,Bootstrap下拉列表停止工作–Rails 4.2
我在我的网站上实现了引导菜单。 问题是,如果我切换页面菜单变得没有响应,请接受“徽标部分”,它将我带回主页。 如果我刷新页面,下拉菜单会再次运行。 我不知道为什么。
我的application.js
看起来像:
//= require jquery //= require jquery_ujs //= require turbolinks //= require bootstrap //= require moment //= require react //= require react_ujs //= require writer/react/panel
我的Gemfile
:
source 'https://rubygems.org' gem 'rails', '4.2.0' gem 'pg' gem 'turbolinks' gem 'jbuilder', '~> 1.2' gem 'therubyracer' gem 'figaro' gem 'responders', '~> 2.0' gem 'active_model_serializers', github: 'rails-api/active_model_serializers', branch: '0-8-stable' gem 'xaaron', '0.6.11', :git => 'git@github.com:AdamKyle/Xaaron.git', :tag => '0.6.11' # Debug gem 'pry', require: 'pry' gem 'pry-rails' # Assets & Asset Management gem "bower-rails", "~> 0.7.2" gem 'uglifier', '>= 1.3.0' gem "font-awesome-rails" gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'jquery-ui-rails' gem 'sass-rails', '~> 4.0.0' gem 'backbone-on-rails' gem 'react-rails', '~> 1.0.0.pre', github: 'reactjs/react-rails' # Test and Development gem 'rspec-rails', '3.2.1', group: [:test, :development] # Development Only group :development do gem 'capistrano', '~> 2.15' gem 'rvm-capistrano', '~> 1.4' gem 'letter_opener' gem 'recursive-open-struct' end # Test Only group :test do gem 'database_cleaner' gem 'guard-rspec' gem 'factory_girl_rails' gem 'capybara' gem 'capybara-screenshot' gem 'capybara-email' gem 'simplecov', '0.8.2' gem 'json_spec', '1.1.2' gem 'vcr' gem 'webmock' end
我的导航元素:
我90%确定我已经包含了所有需要包含的内容。 当我切换页面,刷新页面或切换页面后,控制台不会抛出任何错误 – 尝试单击导航元素。
我错过了什么吗?
更新1
我通过div检查器运行上面的html,没有可以检测到的未关闭的标签。
是的,你错过了什么。 这是turbolinks
。 我可以看到你拥有它,但让我解释一下。 使用turbolinks,每次单击网站上的公共链接时,浏览器都不会进行完整的页面刷新,它只是发送一个AJAX请求并获取标题和正文。 因此没有page:ready
jQuery通常被挂钩的page:ready
事件,因此jQuery不会获取新到达的DOM结构。
所以,这里有一些选项。
-
摆脱turbolinks。 从你的js文件中删除它们你就没事了。 你会有那些整页重新加载,这可能会减慢你的负荷。
-
将属性
data-turbolinks-track='false'
到布局中的javascript_tag
调用中。 这将使浏览器在每次调用时获取js文件。 -
将您的
javascript_tag
调用移动到布局body
的底部。 数字2只是一样的东西。 -
使用像
jquery-turbolinks
这样的gem来连接jQuery所需的回调并让它获取新的DOM。