2016-08-10 11 views
0

私はRailsアプリケーションでjQueryを使ってアニメーション化されたレスポンシブなドロップダウンメニューを持っていますが、メニューリンクの1つをたどると開かれた状態になります。私はリンクをたどることができますが、メニューは開いたままです。 application.jsでjQueryのドロップダウンメニューがページの再読み込みで切り替わらない

<header> 
    <button class="hamburger">&#9776;</button> 
    </header> 

    <div class="menu"> 
    <ul> 
    <% if current_user %> 
     <li><%= image_tag @user.profile_picture.thumb.url, class: 'profile_thumb' %> <span><%= current_user.email %></span></li> 
    <% end %> 
     <li><%= link_to "Home", root_path %></li> 
     <li><%= link_to "Pledges", pledges_path %></li> 
    <% if current_user %> 
     <li><%= link_to "Edit Profile", edit_user_registration_path %></li> 
     <li><%= link_to "Log out", destroy_user_session_path, method: :delete %></li> 
    <% else %> 
     <li><%= link_to "Sign In", new_user_session_path %></li> 
     <li><%= link_to "Register", new_user_registration_path %></li> 
    <% end %> 
    </ul> 
    </div> 

私のjQuery:私のapplication.html.erbで

application.htmlの頭の中でリンクされ

$(document).ready(function() { 

    $('.menu').hide(); 

    $('.hamburger').on('click', function() { 
    $('.menu').slideToggle('slow'); 
    }); 

}); 

これは、アプリ/資産/ JavaScriptのに位置し、 .erbそのもの:

<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 

ありがとうございます。

答えて

1

、それはturbolinksの問題です。あなたのレールのバージョンに応じて、代わりに次のようにラップします。

var ready = function() { 

    $('.menu').hide(); 

    $('.hamburger').on('click', function() { 
    $('.menu').slideToggle('slow'); 
    }); 

}; 

$(document).on('ready', ready); 
// Rails 5 || Turbolinks 5 
$(document).on('turbolinks:load', ready); 
// Rails 4 || Turbolinks < 5 
$(document).on('page:load', ready); 
+0

ありがとう、Ropeney。それはうまく固定されています。 –

0

を前に、デフォルトのクリックイベントを無効にしてください:それの音に

$('.hamburger').on('click', function(evt) { 
    evt.preventDefault(); 
    $('.menu').slideToggle('slow'); 
    }); 
関連する問題