我创建了一个jQuery的动画可以通过点击顶部的预览按钮可以看出:JQuery的动画问题
我已经使用了slideDown
动画方法。问题是所有项目一起滑落。我希望在短暂延迟后显示每个数字。对于有经验的jQuery开发人员来说,这应该不是什么问题。
如何做到这一点?
在此先感谢。
我创建了一个jQuery的动画可以通过点击顶部的预览按钮可以看出:JQuery的动画问题
我已经使用了slideDown
动画方法。问题是所有项目一起滑落。我希望在短暂延迟后显示每个数字。对于有经验的jQuery开发人员来说,这应该不是什么问题。
如何做到这一点?
在此先感谢。
一个使用递归匿名函数的例子。把它放在文档就绪功能中。
// Array of elements to be animated.
var elements = $('.your-selector-here li').get();
(function() {
// Take out the first element of array, animate it
// and pass this anonymous function as callback.
$(elements.shift()).slideDown('slow', arguments.callee);
})();
您需要使用回调函数在第一个完成后为下一个数字设置动画。请参阅documentation。
喜欢的东西:
$('firstNumber').slideDown('slow',function(){
$('secondNumber').slideDown('slow');
});
你需要递归调用此为每个号码。
请问您是否可以修改脚本,使其显示一些延迟后的项目。你可以在http://jsbin.com/anayi3/edit上编辑它。谢谢 – Sarfraz 2010-03-22 10:33:24
试试这个:
var index = 0;
function animate() {
elem = $("div:eq(" + index + ")");
elem.slideDown('slow');
index++;
if (index < 10) {
setTimeout(animate, 500);
}
}
$(function(){
for(var i = 1; i < 10 ;i++){
var elem = $('<div>').html('Number : ' + i).appendTo($('body')).hide();
}
animate();
});
基本上你需要所有的动画附加到某些元素的queue,以连续运行它们
$(function(){
$.each([1, 2, 3, 4, 5, 6, 7, 8, 9], function() {
var elem = $('<div>').html('Number : ' + this).appendTo($('body')).hide();
$("body").queue(function(next) {
elem.slideDown('slow', next)
});
});
});
这里所有的动画连接到“身体”,但可以是任何元素。 “下一个”语法在jquery 1.4中是新的。
这是完全聪明和优雅。欢迎来到SO,Yaggo! – user187291 2010-03-22 11:03:10
@Yaggo:太棒了:从未想过可以这样做。谢谢:) – Sarfraz 2010-03-22 11:16:15
感谢您的热烈欢迎,stereofrog! – jholster 2010-03-22 11:19:17