3

当您将鼠标悬停在过渡时下拉的子菜单上时,我遇到了一个小问题...它闪烁得非常厉害,非常糟糕...我尝试添加 .stop 但它没有帮助,自然很多用户会悬停虽然效果正在过渡......所以希望有办法阻止这种情况,我已经建立了以下......

http://jsfiddle.net/awxgY/3/

// menu hover functionality
$(document).ready(function () {
  $('nav li,#mini-menu li').hover(
    function () {
  //show its submenu
  $('.sub-nav', this).slideDown(400).stop;
  $('.mini-nav', this).fadeIn(300).stop;
}, 
function () {
  //hide its submenu
  $('.sub-nav,.mini-nav', this).stop(true,true).fadeOut(300);           
}
  );    

// preserves nav hover state
  $("nav ul li .sub-nav").each(function(i){
$(this).hover(function(){
  $(this).parent().find("a").slice(0,1).addClass("navactive");
},function(){
  $(this).parent().find("a").slice(0,1).removeClass("navactive");
});
 });
});

如果您将鼠标悬停在 Link 4 > 并在它进入时进入子菜单,您会明白我的意思。

4

2 回答 2

3

这似乎工作正常 - http://jsfiddle.net/awxgY/6/

首先, .stop() 需要括号,因为它是一个函数。其次,应该在任何动画之前调用 .stop() 函数......而不是之后...... $('.sub-nav', this).stop().slideDown(400);- 不确定这是否解决了问题 b/c 我没有真正看到它。在动画之后停止会导致当前动画停止,这不是您想要的。

我还添加了一个stopPropagation()调用来消除悬停命令的任何“翻转”。

于 2013-05-20T09:22:41.903 回答
0

只需删除菜单和子菜单之间的空白即可。http://jsfiddle.net/ecTLz/

.sub-nav { display: none; position: absolute; overflow: auto; top: 60px; width: 100%; z-index: 500; left: 0; padding: 2em 0;background:#000}
于 2013-05-20T09:36:33.850 回答