我有一个简单的水平菜单,当我将鼠标悬停在每个项目上时,子菜单会向下滑动。所以基本上它是我们经常看到的典型导航菜单。我希望当鼠标悬停时子菜单会在鼠标移出时向下和向上滑动。我的问题是,如果我在项目中快速移动鼠标,就会有多个子菜单保持可见。我猜这是因为当我触发向上滑动时,向下滑动尚未完成。有什么办法可以防止这种情况发生吗?这是我的代码:
$('#menu > li').hover(
function () {
$('ul',$(this)).slideDown();
},
function () {
$('ul',$(this)).slideUp();
}
);
谢谢!
最佳答案
您应该调用stop
在上下滑动之前,根据您的描述,您还应该为两个可选参数传递 true
,如下所示:
$('ul',$(this)).stop(true, true).slideDown();
第一个参数 (clearQueue
) 告诉 jQuery 清除动画队列,停止任何排队的动画。
第二个参数(gotoEnd
)告诉jQuery完成当前的动画。 (在您的情况下,此参数可能不是必需的,具体取决于您想要的效果。)
关于jquery悬停事件无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2009151/