jquery hover事件只触发一次动画

摘要:
最近,我遇到了一个动画问题,如下所示:[javascript]viewplaincopy$hover;代码只是一个简单的鼠标滑动动画。但当我测试它时,我发现当我紧张地来回滑动时,事件会被触发多次,动画会重复多次。我们怎么能不重复呢?也就是说,当鼠标在动画过程中滑过这个div时,事件不会被触发?

最近工作时遇到个关于动画的问题,如下:

[javascript] view plain copy
 
  1. $("div").hover(  
  2.     function() {  
  3.         $(this).animate({"margin-top":"100px"},1000);  
  4.     }, function() {  
  5.         $(this).animate({"margin-top":"200px"},1000);  
  6.     });  

看代码就是一个简单的鼠标滑过的动画而已,但是当我测试的时候发现,当我发神经似的来回滑动时,事件就被触发了多次,动画也就重复了多次,怎么才能不重复出现,即动画过程中,鼠标滑过这个div,不会触发该事件那?

带着疑问,google之,

发现,原来为元素绑定hover事件之后,如果光标移入移出的速度太快,导致移入的动画还没执行完,就移出光标,则移出的动画效果就会被放到队列,等移入的动画完成后在执行。因此如果光标的移入移出速度太快,就会导致动画效果与移动光标不一致,出现重复出现的情况。

而解决办法有两种:

1、你可以使用jq的stop方法:

$(div).stop(false, true).animate({'margin-top':'100px'},1000);

如果stop()的第一个参数为true,表示立即清除当前的动画队列,默认为fx;如果第二个参数为true,表示立即将当前正在执行的动画置为它的结束状态。

延伸:(看来我真的得好好看看jq的api了)

停止元素的动画:stop([cleanQueue, gotoEnd]):第一个参数代表是否要清空未执行完的动画队列,第二个参数代表是否直接将正在执行的动画跳转到末状态。(可缺省)。

(1)无参数stop():立即停止当前的动画,如果接下来还有动画则以当前状态开始接下来的动画。

(2)stop(false, true) : 当前的动画直接达到末状态。

(3)stop(true, true) : 当前的动画直接达到末状态并清空当前对象的动画队列。

注意:jQuery只能设置正在执行的动画的最终状态,不能直接达到未执行动画的最终状态。

2、执行动画前判断一下:

if (!$(obj).is(':animated')) {
    // to do something
}

 

免责声明:文章转载自《jquery hover事件只触发一次动画》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇精通shell编程--最后的总结EXEC用法总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IOS启动动画(广告)

许多APP启动时,需要加载广告或者为了美观加载动画。 首先参考了许多网上的例子,都是在AppDelegate.m中的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions   实现的。因为,它...

lottie-前端实现AE动效

在前端页面上为了实现动画效果,可以用CSS3自己实现,可以让UI小姐姐给你GIF动图,也可以直接animate.css等等吧,可以实现的方式有不少,但如果说偏差那肯定是会有的,在呈现上也会有点不太自然,今天介绍一个神器Lottie。(刚接触到这个东西,那兴趣是真的十分大,真的是对前端很友好。) Lottie背景介绍 Lottie是可应用于Android,...

CSS3动画特效——transform详解

CSS3动画特效——transform详解  还可以和过渡属性(Transition)连用      transition&transform,CSS中过度和变形的设置 前置属性: transform-origin更改一个元素变形的原点transform-style:设置元素的子元素是位于 3D 空间中还是平面中 flat:平面,如果选择平面即此...

css 实现 ul li 的显示与隐藏

本文从CSS角度来实现导航栏的显示与隐藏,用到了ul、li标签 html源代码: css文件: 有点小感悟:总是先设置默认情况:默认不显示或者默认黑色,然后再设置hover时的具体情况 li颜色变化比较简单:设置个全局颜色(默认颜色),然后li:hover设置hover时的颜色; li 显示比较复杂,因为涉及到自菜单显示情况:总是先设置下属所有子菜单全...

常用移动web开发框架--转载

  阅读目录 1.1 jQuery mobile flat-ui 主题 1.2jQuery mobile Bootstrap 主题 4.1 GMU   4.2 Clouda+  4.3 efe    5.1 Spirit 5.2 Frozen UI       纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile 、...

你知道几种前端动画的实现方式?

随着互联网的持续发展,H5 页面作为与用户直接交互的表现层越来越复杂,呈现的形式也越来越丰富,从而也要求 H5 页面具有更多的花样性及动画效果。那前端实现动画效果的方式有哪些呢,大致有如下几种: 一、GIF图片 GIF图就直接贴上图片就好了,使用非常简单,但GIF图有时出现问题是没办法控制的,比如常见的GIF图的闪烁现象。 二、序列帧 序列帧其实本质是GI...