我正在尝试构建一个默认显示第一个项目的菜单,当您将鼠标悬停在其上时,其余项目会滑出,并在鼠标离开时再次隐藏。它主要工作,但如果鼠标在完成滑出之前退出,则不会调用hide函数。我认为stop()
应该照顾这个,但它似乎没有任何影响。
$(function(){
$("#menubar").children(".breadcrumbs").children("li + li").hide();
$("#menubar .breadcrumbs").hover(function() {
$(this).children("li + li").stop().show("slide", {}, 'slow');
}, function() {
$(this).children("li + li").stop().hide("slide", {}, 'slow');
});
});
有人能看出我做错了吗?
答案 0 :(得分:7)
我不是最大的动画天才,但我敢打赌它与你在每个处理程序中重建jQuery对象这一事实有关。试试这个:
$(function(){
var children = $('#menubar .breadcrumbs').children('li + li');
children.hide();
$("#menubar .breadcrumbs").hover(function() {
children.stop().show("slide", {}, 'slow');
}, function() {
children.stop().hide("slide", {}, 'slow');
});
});
编辑 - @melee在评论中指出此特定设置的行为并不总是稳定的。如果你小心地将鼠标移到“Home”<li>
的右边缘(靠近“&gt;”字符),那么有时动画就会变得怪异。目前尚不清楚为什么,但浏览器对于应该呈现元素的位置感到非常困惑。
答案 1 :(得分:0)
STOP(),函数,(true,true),(false,false)的参数是否尝试更改这些参数以更改所需的效果?
答案 2 :(得分:-1)
停止功能的定义是
.stop( [ clearQueue ], [ jumpToEnd ] )
官方网站... ...
clearQueue:一个布尔值,指示是否 也删除排队的动画。 默认为false。
jumpToEnd:表示是否的布尔值 完成当前动画 立即。默认为false。