【发布时间】:2016-09-09 21:57:59
【问题描述】:
我在 Rails 应用程序中使用 jQuery 来创建下拉菜单。起初我以为是链轮问题。 我的 nav.html.erb 文件中的代码是:
<nav>
<%= link_to '#', class: 'toggle' do %>
<i class="fa fa-bars"></i>
<span>Menu</span>
<% end %>
<ul class = "menu-items">
<li>
<%= link_to root_path do %>
<span>Home</span>
<% end %>
</li>
<li>
<%= link_to about_path do %>
<span>About</span>
<% end %>
</li>
<li>
<%= link_to projects_path do %>
<span>Projects</span>
<% end %>
</li>
<li>
<%= link_to blogs_path do %>
<span>Blog</span>
<% end %>
</li>
<li>
<%= link_to contact_path do %>
<span>Contact</span>
<% end %>
</li>
</ul>
</nav>
我的 nav.js 文件中的代码是:
$(document).ready(function() {
var $switch = $('a.toggle'),
$menu = $('nav ul.menu-items'),
$icon = $('nav a.toggle i');
$switch.on('click', function(e){
e.preventDefault();
$menu.toggle(function(){
$icon.toggleClass('fa-bars fa-times');
});
});
});
当我刷新页面时,我按下菜单导航栏,它会显示下拉菜单。我可以单击其中一个菜单项并将被重定向到该页面。在新页面上,我再次单击菜单栏,我得到了它的默认行为,它只是在 url 中添加了“#”。
我认为这与 document.ready 函数有关。在页面刷新时,document.ready 函数会运行,但在我单击菜单项时从页面重定向后不会运行。
【问题讨论】:
-
尝试
$(function() {而不是$(document).ready(function() {。 jQuery 3 弃用了这种语法,因为有时它有奇怪的行为。 api.jquery.com/ready -
刚试过。相同的行为。
标签: javascript jquery html css ruby-on-rails