jquery .stop()不工作

时间:2011-03-23 14:38:57

标签: jquery jquery-animate

我正在尝试构建一个默认显示第一个项目的菜单,当您将鼠标悬停在其上时,其余项目会滑出,并在鼠标离开时再次隐藏。它主要工作,但如果鼠标在完成滑出之前退出,则不会调用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');
    });
});

jsFiddle demo

有人能看出我做错了吗?

3 个答案:

答案 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。

这是http://api.jquery.com/stop/