jQuery 中的非嵌套动画序列?
我正在尝试使用 jQuery 创建一个动画序列,其中一个动画在前一个动画完成后开始。但我就是无法理解它。我尝试使用 jQuery.queue,但我认为我不能使用它,因为它似乎为 jQuery 数组中的每个元素都有一个单独的队列。
我需要类似的东西:
$('li.some').each(function(){
// Add to queue
$(this).animate({ width: '+=100' }, 'fast', function(){
// Remove from queue
// Start next animation
});
});
有没有一种 jQuery 方法可以做到这一点,或者我是否必须手动编写和处理自己的队列?
I'm trying to create an animation sequence with jQuery where one animation starts after the previous one is done. But I just can't wrap my head around it. I've tried to make use of the jQuery.queue, but I don't think I can use that because it seems to have one individual queue for each element in the jQuery array.
I need something like:
$('li.some').each(function(){
// Add to queue
$(this).animate({ width: '+=100' }, 'fast', function(){
// Remove from queue
// Start next animation
});
});
Is there a jQuery way to do this or do I have to write and handle my own queue manually?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以制作自定义
.queue()
以避免无限嵌套。演示位于 http://jsfiddle.net/gaby/qDbRm/2/
另一方面,如果您想执行相同的动画对于一个接一个的多个元素,然后您可以使用它们的索引
.delay()
每个元素的动画持续时间为所有先前的动画..演示位于 http://jsfiddle.net/gaby/qDbRm/3/
You can make a custom
.queue()
to avoid the limitless nesting..Demo at http://jsfiddle.net/gaby/qDbRm/2/
If, on the other hand, you want to perform the same animation for a multitude of elements one after the other then you can use their index to
.delay()
each element's animation for the duration of all the previous ones..Demo at http://jsfiddle.net/gaby/qDbRm/3/
.animate() 的回调实际上接受另一个 .animate(),因此您所要做的就是
依此类推。
The callback of .animate() actually accepts another .animate(), so all you would have to do would be
and so on.
您可以递归调用下一个。
You could call the next one recursively.
为什么不建立一个队列?
编辑:添加速度参数
why not build up a queue?
EDIT: added speed param
谢谢大家的回复!
我想我应该分享我的问题的结果。这是一个简单的 jQuery SlideDownAll 插件,它一次向下滑动一个项目,而不是一次滑动所有项目。
不是很好的测试,但无论如何。
享受!!
Thanks to everybody replying!
I thought I should share the outcome of my question. Here is a simple jQuery slideDownAll plugin that slides down one item at a time rather than all at once.
Not very well test, but anyways.
Enjoy!!