jquery.stop()不工作

jquery.stop()不工作,jquery,jquery-animate,Jquery,Jquery Animate,我正在尝试构建一个菜单,其中默认情况下只显示第一个项目,当您将鼠标悬停在该菜单上时,其余项目将滑出,并在鼠标离开时再次隐藏。它大部分工作正常,但如果鼠标在滑出之前退出,则不会调用隐藏函数。我以为stop()应该会处理这个问题,但似乎没有任何影响 $(function(){ $("#menubar").children(".breadcrumbs").children("li + li").hide(); $("#menubar .breadcrumbs").hover(func

我正在尝试构建一个菜单,其中默认情况下只显示第一个项目,当您将鼠标悬停在该菜单上时,其余项目将滑出,并在鼠标离开时再次隐藏。它大部分工作正常,但如果鼠标在滑出之前退出,则不会调用隐藏函数。我以为
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');
    });
});


有人知道我做错了什么吗?

STOP()函数有参数,(真,真,(假,假)你试过修改这些参数来改变想要的效果吗?

我不是最大的动画天才,但我打赌这与你在每个处理程序中重建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');
    });
});

edit-@melee在评论中指出,这种特殊设置的行为并不总是稳定的。如果您小心地将鼠标移向“Home”(主页)的右边缘(靠近“>”角色),则有时动画会有点反常。原因尚不清楚,但浏览器只是对元素应该呈现在哪里感到非常困惑。

停止函数的定义是

.stop( [ clearQueue ], [ jumpToEnd ] )
官方网站去

clearQueue:一个布尔值,指示是否 也可以删除排队的动画。 默认为false

jumpToEnd:一个布尔值,指示是否 完成当前动画的步骤 马上。默认为false


这是来自

我尝试过不同的组合,但似乎没有任何区别。不确定这是针对JSFIDLE还是Firefox的,但当你将鼠标放在
主页>
胡萝卜上时,它会变得非常疯狂。在Chrome上也发生过,但我无法重现。我认为这是幻灯片ani的问题-我在FF4中测试了它:)我认为这是因为在特定的点上,当li滑入时,你的鼠标在这些元素上移动,因此当它们通过时,它会重新触发幻灯片事件,导致循环。我想你需要合并一些回调和变量来让它完美地工作。我有一个类似的问题,这对我来说很有效。我想知道为什么;通常情况下,执行
$(“#stuff”).hide(200)$停止
,但是如果使用
子项()
,jQuery显然会忘记集合。