我有一个界面,它大量使用jQuery slideUp和slideDown效果,以三态方式展开项目。
onmouseover: function() {
this.find('.details', this).slideDown();
},
onmouseout: function() {
this.find('.details', this).slideUp();
}
然而,当用户在这些界面元素上快速移动鼠标时,动画无法跟上,并且在鼠标离开界面区域很久之后,项目将上下滑动。
当鼠标离开项目的containerdiv时,是否有办法取消所有排队的幻灯片动画?
7条答案
按热度按时间cdmah0mi1#
我相信您应该能够添加一个
.stop()
,它会为您处理这些问题:b0zn9rqh2#
你真正想要的答案是所有其他三个答案的组合。
您希望在stop中使用
true
,因为它们会清除挂起的动画队列。如果不使用这些,您会发现快速重复地在元素上移动鼠标会产生错误的结果。hiz5n14c3#
一般来说,在启动这样的动画时需要调用
stop()
:这应该足以避免长时间运行动画队列。
还可以使用
$.clearQueue()
全局清除尚未开始的动画。此外,如果您在
mouseover()
和mouseout()
上设置这些事件,那么可以说使用hover()
事件会更清楚。u3r8eeie4#
如果你把参数放在
stop()
中也会更好,就像这样:一米一米一bcs8qyzn5#
在我的例子中,我也在寻找一个
.stop()
的解决方案来解决大量的上下动画队列,但是,它仍然没有解决,因为它不平滑,而且有bug,使它不能再向下滑动了。因此,我提供了一个与取消队列无关的解决方案,但它可能会对你们中的一些人有所帮助。这个解决方案是关于在动画目标当前没有被动画化时将其上下滑动。
31moq8wy6#
您可以执行以下操作:http://jsfiddle.net/3o2bsxo6/3/
脚本语言
网页:
中央支助组:
kulphzqa7#
此线程中发布了类似的查询。使用
stop(true,false)你可以达到没有bug的效果。
我假设在**#YourDiv**之后有一个元素,您希望将其放入上滑和下滑动画。
这将跳转到最后一个事件的动画,并清除链中所有挂起的事件。