首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery悬停事件未正常工作

问jquery悬停事件未正常工作
EN

Stack Overflow用户
提问于 2010-01-06 05:17:28
回答 4查看 809关注 0票数 2

我有一个简单的水平菜单,当我将鼠标悬停在每个项目上时,一个子菜单就会滑下来。基本上,这是我们经常看到的典型导航菜单。我希望当鼠标滑出时,子菜单会上下滑动。我的问题是,如果我在项目间快速移动鼠标,就会出现一个以上的子菜单保持可见。我猜这是因为当我启动滑梯时,滑梯还没有滑完。有什么办法可以防止这种情况发生吗?下面是我的代码:

代码语言:javascript
复制
        $('#menu > li').hover(
                function () {
                    $('ul',$(this)).slideDown();
                },
                function () {
                    $('ul',$(this)).slideUp();
                }
            );

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-06 05:25:39

您应该在上下滑动之前调用stop,根据您的描述,您还应该为这两个可选参数传递true,如下所示:

代码语言:javascript
复制
$('ul',$(this)).stop(true, true).slideDown();

第一个参数(clearQueue)告诉jQuery清除动画队列,停止所有排队的动画。

第二个参数(gotoEnd)告诉jQuery完成当前动画。(在您的情况下,此参数可能不是必需的,具体取决于所需的效果。)

票数 5
EN

Stack Overflow用户

发布于 2010-01-06 05:21:35

在停止之前,您可能可以使用slideUp ()函数来停止所有当前动画。

http://docs.jquery.com/Effects/stop

票数 3
EN

Stack Overflow用户

发布于 2010-01-06 05:22:17

可能发生的情况是,mouseleave事件根本不会触发。您可以通过在事件处理程序的开头添加一些console.log语句来测试这一点,然后检查IE8的开发人员工具或Firebug,以查看是否所有事件都在触发。

如果要中断正在运行的动画,请使用jQuery has a stop() method that does that。您可能还想让每个slideDown都使所有其他的都向上滑动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2009151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档