我正在jquery中制作菜单。你可以看到它在http://mywash.dk/testtest/index.htmljquery子菜单,悬停进/出动画问题
子菜单是从一开始(下面的“Hvordan”)显示的是活动的菜单,所以应该始终显示(除非你悬停在另一个菜单项在这种情况下,另一个子菜单应显示。
它的工作不错,但有1级恼人的错误。当你从“Hvad”悬停“HVEM”它快速显示出它应该是菜单之前隐藏活动菜单。
知道为什么这是这样吗?
非常感谢您的帮助!
的Jquery:
$(document).ready(function() {
$('#menu > ul > li:not(.inpath) ul').hide();
$('#menu .inpath ul').show();
$('#menu > ul > li:not(.inpath)').hover(
function() {
$('ul', this).show("slide", { direction: "left" }, 400);
if($('#menu li.inpath ul').is(':visible') && $(this).not('#menu ul li')){
$('#menu li.inpath ul').hide("slide", { direction: "left" }, 400);
}
}, function() {
$('ul', this).hide("slide", { direction: "left" }, 400);
if($('#menu li.inpath ul').is(':hidden') && $(this).not('#menu ul li')){
$('#menu li.inpath ul').show("slide", { direction: "left" }, 400);
}
});
});
HTML:
<div id="menu">
<ul>
<li class="test"><a href="">Hvem</a>
<ul>
<li class="first-item"><a href="index.html">Submenu</a></li>
</ul>
</li>
<li class="test"><a href="">Hvad</a>
<ul>
<li class="first-item"><a href="index.html">Produkter</a></li>
<li class="activeitem"><a href="cases.html" >Leveringer</a></li>
</ul>
</li>
<li class="inpath test"><a href="">Hvordan</a>
<ul>
<li class="first-item"><a href="">Reklame</a></li>
<li><a href="">PR</a></li>
<li><a href="">Websites</a></li>
<li><a href="">Illustrationer</a></li>
</ul>
</li>
<li class="last-item test"><a href="">Sådan!</a></li>
</ul>
<div class="clear"><!--clearfix--></div>
</div>
**无关:**建议使用'.stop()'也。 – daryl 2011-03-11 09:26:26
'.stop()'不是一个好的解决方案。它可能会阻止中间动画,看起来真的很奇怪。使用'.filter(':not(:animated)')。show()'更简单一些,但仍然不完全稳定。 – Millenjo 2013-06-26 11:20:36