2017-03-05 71 views
0

/views/layouts/_navigation.html.erb我有這樣的一段代碼,其中下拉菜單填充上點擊:導軌5:點擊隱藏導航下拉

<div class="dropdown profile-element"> 
    <span> 
    <img alt="image" class="img-circle" src="<%= image_url 'profile_small.jpg' %>"/> 
    </span> 
    <a data-toggle="dropdown" class="dropdown-toggle" href="#"> 
     <span class="clear"> 
     <span class="block m-t-xs"> 
     <strong class="font-bold"><%= current_user.name %></strong><b class="caret"></b> 
     </span> 
     </span> 
    </a> 
    <ul class="dropdown-menu animated fadeInRight m-t-xs"> 
     <li><%= link_to t('.settings'), edit_user_path(current_user), remote: true %></li> 
     <li class="divider"></li> 
     <li><%= link_to t('.logout'), logout_path %></li> 
    </ul> 
</div> 

link_to t('.settings')填充顯示用戶設置的AJAX模式窗口。在/javascripts/layouts/navigation.coffee我有這樣一段代碼:

$(document).click (event) -> 
    clickover = $(event.target) 
    $navbar = $('.dropdown profile-element') 
    _opened = $navbar.hasClass('in') 
    if _opened == true and !clickover.hasClass('dropdown-toggle') 
    $navbar.collapse 'hide' 
    return 

應關閉下拉菜單中單擊link_to t('.settings')時,但它不工作。

如何在點擊settings時關閉下拉菜單?感謝您的任何幫助。在解決方案

如果有人需要在這裏

更新是最終的解決方案,這似乎是在我的情況下,最簡單的。我添加了$("#dialog").trigger('click');到我的users/edit.js.erb,當模式被填充時,後臺下拉消失。

+0

你做了什麼調試?如果你記錄你的變量,你可以確認它們是否設置爲你期望的變量,例如你確定event.target是你期望的嗎?被打開設置爲真值,什麼類型的點擊具有? – margo

+0

@margo我現在沒有做任何調試。到目前爲止,我試圖實現[從這裏回答](http://stackoverflow.com/a/25409035),因爲它似乎我的情況。我想我不明白在上面的JS代碼中的東西。 – matiss

+0

我建議你在代碼中添加一些日誌記錄,並在控制檯中檢查你的變量是否是你期望的變量,例如console.log($(event.target)) – margo

回答

1

你有錯誤的導航欄選擇器。它應該是相當:

$navbar = $('.dropdown.profile-element')

或者換句話說,你忘了 「」在「profile-element」之前。

+0

謝謝,它的工作原理。我找到了另外一種方法 - 我不得不爲我的'views/users/edit.js.erb'添加'$('#profile_dropdown')。hide();'並將'id ='profile_dropdown'添加到'_navigation .html.erb' – matiss