所以我一直試圖通過點擊菜單框(類似於Medium菜單)來設置菜單的動畫效果。到目前爲止,一切正常,並在一個完整的頁面刷新JQuery事件第一次觸發沒有任何問題。JQuery .on(「click」)僅在第二次點擊後觸發
但是,當我點擊菜單中的鏈接時,它會帶我到頁面,但菜單按鈕在第一次點擊時不起作用,但在第二次點擊時它完全正常。這種情況不會發生。
我已經看過其他幾個類似的問題,但他們的解決方案都沒有解決我的問題。有沒有人有任何想法可能會出錯?哦,我也在使用Ruby on Rails 4,如果這會影響它的話。
菜單按鈕HTML
<div id="menu-hex"></div>
菜單HTML
<ul>
<li>
<%= link_to(root_url) do %>
<h3 class="am"><span class="icon-home profile-icos"></span> Daily Feed</h3>
<% end %>
</li>
<li class="coming-soon">
<%= link_to(root_url) do %>
<h3 class="am"><span class="icon-fire profile-icos"></span> Improve</h3>
<% end %>
</li>
<li class="coming-soon">
<%= link_to(root_url) do %>
<h3 class="am"><span class="icon-star profile-icos"></span> Events</h3>
<% end %>
</li>
<li class="coming-soon">
<%= link_to("/login") do %>
<h3 class="am"><span class="icon-bookmarks profile-icos"></span> Communities</h3>
<% end %>
</li>
</ul>
CSS
#menu-hex {
position: absolute;
left: 6px;
top: 7px;
background-image: url('homehex.png');
width: 65px;
height: 65px;
background-size: 100%;
cursor: pointer;
z-index: 20;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: moz-none;
-ms-user-select: none;
user-select: none;
}
JQuery的
var menuOn = false;
var duration = 250;
$(document).on("click", "#menu-hex", function(e) {
if(menuOn == false) {
openMenu();
}else {
closeMenu();
}
});
$(document).on("click", ".overlay", function(e) {
if(menuOn == true) {
closeMenu();
}
});
function openMenu() {
$(".overlay").css("display", "block");
$("#focusimage").animate({opacity: 0.2}, duration);
$("#spot-content").animate({"left":"-300px"}, duration, function()
{ $("#spot-content").css("display", "none") });
$("#menu").animate({"left":"25px", opacity: 1.0}, duration);
menuOn = true;
}
function closeMenu() {
$(".overlay").css("display", "none");
$("#focusimage").animate({opacity: 1.0}, duration);
$("#spot-content").css("display", "block");
$("#spot-content").animate({"left":"25px"}, duration);
$("#menu").animate({"left":"-300px", opacity: 1.0}, duration);
menuOn = false;
}
現在,究竟是什麼'setTimeout(set);'做? – adeneo
我忘了從別的東西中刪除那個我正在嘗試哈哈。 Woops。 – div
嘗試設置[jsFiddle](http://jsfiddle.net) – adeneo