Я использую приложение jQuery в Rails для создания выпадающего меню. Сначала я подумал, что это проблема с цепями. код в моем nav.html.erb файла:Выпадающее меню jQuery не работает во второй раз
<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 не одобряет этот синтаксис, потому что иногда это странное поведение. Https://api.jquery.com/ ready/ – yuriy636
Просто попробовал это. –