用于Bootstrap下拉列表的JavaScript有时会起作用,有时则不起作用

时间:2015-07-28 01:56:56

标签: javascript jquery ruby-on-rails twitter-bootstrap haml

所以我正在使用Bootstrap下拉菜单:

%ul.hidden-xs.hidden-sm
  %li= link_to "LIBRARY", library_path
  %li= link_to "PRICING", plans_and_pricing_path
  %li.dropdown
    .dropdown-toggle{"aria-expanded" => "false", "aria-haspopup" => "true", "data-toggle" => "dropdown"}= link_to "#{current_user.first_name} <i class='fa fa-caret-down'></i>".html_safe, '#'
    %ul.dropdown-menu
      %li= link_to 'Edit profile', edit_user_registration_path(resource), class: 'user-nav-li'
      %li= link_to 'Referrals', referrals_path, class: 'user-nav-li'
  %li= link_to "LOG OUT", destroy_user_session_path, method: :delete

有时它会起作用,有时却不起作用。单击下拉列表时,我已经尝试查看检查器中的元素(在它不工作的时间),我可以看到事件触发。 %li.dropdown应该添加open类,而aria-expanded应该从true更改为false。这是它工作时会发生的事情。但是,当它不起作用时,元素保持不变,只需在检查器(Chrome)中简单地突出显示,就像元素在更改时一样。

这告诉我JS正在加载,因为它至少响应了click事件。但没有其他事情发生。

我试过寻找模式。刷新有时会修复它,但其他时候会触发问题。有时导航到不同的页面会修复它,但有时却没有。并且没有一个页面表现一致。我想无论如何都应该没关系,因为它在我的导航栏中并且在应用程序级别上。

我不确定还有什么可以尝试的。一切似乎都很随意。

旁注:我不是JavaScript专家

1 个答案:

答案 0 :(得分:2)

正如我所说,罪魁祸首是turbolinks。添加gem jquery-turbolinks应该可以解决问题。

#Gemfile
gem 'jquery-turbolinks'

并运行bundle install