1

Я разместил выпадающее меню onclick в моей верхней панели навигации. В верхней панели навигации, я хотел бы изменить это изображение в моем new.html.erb шаблоне вида:Изменение изображения между шаблонами заметок, останавливающее выпадающее меню onclick?

<li class="navigation-bar-right"> <span class="create"> <%= link_to image_tag("createpost.svg"),new_post_url, method: :get %> </span> </li> 

Я скопировал весь навигационный штрих-код от application.html.erb & добавили его вершина new.html.erb, изменение createpost.svg к createone.svg:

<li class="navigation-bar-right"> <span class="create"> <%= link_to image_tag("createone.svg"),new_post_url, method: :get %> </span> </li> 

Howe не верьте, хотя изображение изменилось, выпадающее меню OnClick больше не работает в моем new.html.erb шаблоне вида ..

Пробовало много решений & не может понять это. Любая помощь будет потрясающей - спасибо!

application.html.erb

<% if user_signed_in? %> 

<ul class="navigation-bar"> 

<div class="navigation-bar-right-inset"> 
    <li class="navigation-bar-right"> <span class="create"> <%= link_to image_tag("createpost.svg"),new_post_url, method: :get %> </span> </li> 
    <li class="navigation-bar-right"> <span class="home"> <%= link_to image_tag("home.svg"), posts_url, data: {no_turbolink: true} %> </span> </li> 
    <li class="navigation-bar-right" id="drop"> <span class="settings"> <a href="#"> <img class="#" src="/assets/settings.svg"> </a> </span> 
     <ul class="dropdown"> 
     <li> <%= link_to "Profile", edit_user_registration_path, method: :get %> </li> 
     <li> <%= link_to "Log out", destroy_user_session_url, method: :delete %> </li> 
     </ul> 
    </li> 
</div> 

</ul> 

new.html.erb

<% if user_signed_in? %> 

<ul class="navigation-bar"> 

<div class="navigation-bar-right-inset"> 
    <li class="navigation-bar-right"> <span class="create"> <%= link_to image_tag("createone.svg"),new_post_url, method: :get %> </span> </li> 
    <li class="navigation-bar-right"> <span class="home"> <%= link_to image_tag("home.svg"), posts_url, data: {no_turbolink: true} %> </span> </li> 
    <li class="navigation-bar-right" id="drop"> <span class="settings"> <a href="#"> <img class="#" src="/assets/settings.svg"> </a> </span> 
     <ul class="dropdown"> 
     <li> <%= link_to "Profile", edit_user_registration_path, method: :get %> </li> 
     <li> <%= link_to "Log out", destroy_user_session_url, method: :delete %> </li> 
     </ul> 
    </li> 
</div> 

</ul> 

posts.js.coffee

jQuery -> 
$("#drop").click (e) -> 
    e.preventDefault() 
    $(this).find(".dropdown").fadeToggle "fast" 

$(document).on "click", (e) -> 
    $trigger = undefined 
    $trigger = $("#drop") 
    $(".dropdown").fadeOut "fast" if $trigger isnt e.target and not $trigger.has(e.target).length 

CSS

ul li .dropdown { 
    display: none; 
    position: fixed; 
    z-index:100; 
    margin-top: -8px; 
} 

.dropdown li { 
    list-style-type: none; 
    padding: 8px; 
    width: 70px; 
    font-size: 11px; 
    font-family: helvetica; 
} 

ответ

0

Попробуйте это:

#app/assets/javascripts/posts.js.coffee 
$(document).on "click", "#drop", (e) -> 
    $trigger = $(this) 
    $(".dropdown").fadeOut "fast" if $trigger isnt e.target and not $trigger.has(e.target).length 
  1. Всегда убедитесь, что вы ссылка действительного DOM элемента (особенно при делегировании)
  2. Вы ссылающийся posts.js.coffee - вы Конечно, это называется в new.html.erb?
+0

Hi Richard - спасибо за ваш ответ! К сожалению, это не решило проблему. Я поставил предупреждение(); в коде сценария кофе, и он был вызван в представлении new.html.erb. :/ – domburford

+0

Boo hoo, давайте плакать об этом немного больше. Какую отладку вы сделали? Любые ошибки в консоли? Как вы ссылаетесь на свою «posts.js.coffee»? –

+1

Просто удалось разобрать ваш комментарий сквозь слезы. Никаких ошибок в консоли и ссылок на '// = require_tree .' в' application.js.' – domburford