微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 防止事件被不必要地触发

$('#menu > li').hover(function(){
     $(this).find('ul').slideDown();
});

$('#menu > li').mouseleave(function(){

     $(this).find('ul').slideUp();
});

这工作正常,但如果我悬停/离开< li>菜单的项目很多次,非常快,一旦我停下来,我会看到它上下滑动的次数和我徘徊的次数一样多,

请观看此类视频捕捉

http://www.screenr.com/dkes

¿怎么可以预防?

解决方法:

您可以使用stop来停止当前动画.您还可以组合两个事件处理程序,只使用hover(可以使用2个参数,第一个是在mouseenter上运行的函数,第二个是在mouseleave上运行的函数):

$('#menu > li').hover(function() {
    $(this).find('ul').stop(true, true).slideDown();
}, function() {
    $(this).find('ul').stop(true, true).slideUp();
});

一个参数是clearQueue,当你反复悬停时,它会停止无休止地排队的动画.第二个参数是jumpToEnd,它强制任何当前正在运行的动画在开始新动画之前结束.

这是simple example.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐