今天做一个点击动画时,遇到了当快速连续点击时,动画效果会乱,并不是我们想要达到的效果。
查询了一下,确认是动画累积的原因。网上搜了一下,发现jquery 的stop()函数刚好能解决。
stop(clearQueue,jumpToEnd)函数分析
仅仅从官方API上给出的说明,我们就知道,第一个参数是针对的其它动画队列(不包含当前动画),第二个参数则是当前动画。
那么,什么是动画队列呢?
所谓的动画队列就是一系列要执行的动画,比如对一个盒子先在前一秒执行挪动动画,再过一秒执行变大的动画。那么,这就是两个动画了。
再比如,点击某个按钮a,给盒子b触发动画效果,每次挪动10px,挪动10px需要的时间是2s,那么以很快的速度狂点这个a按钮,你在2s时间里点了10次,这个动画需要累积10次的。虽然我们2s里只能完成1个动画效果,但是剩下的9个动画还是要完成的,这就形成了动画累积,跟排队似的,若不做任何处理,将会逐个按照先来先动画的规则完成。
但现实中,这种动画累积并非是我们期望的结果。所以,我们需要对动画进行更多的操作。从stop的参数来看,对于动画的操作,分为当前动画和等候动画队列,传入的参数为boolean值类型。
- clearQueue,是否清除等候动画队列,默认false,即是不清除等候动画队列,设置为true,则清空等候动画队列。
- jumpToEnd,是否立即完成当前动画,默认false,即是停止当前动画,设置为true,则立即完成当前动画。
没错,上面的例子确实可以验证stop函数的参数作用。