jQuery-animate+;在for cycle的队列中显示()
我有一个非常具体的问题,我甚至不知道在谷歌上找什么。。。 我正在尝试创建一个动画字母。在一个单独的标记中有一支笔和5行,它们都在一个容器元素中,相对定位,有它们自己的ID,并且这些行是隐藏的(都在它们应该出现的地方)。动画是这样的:画笔沿对角线移动,出现一条线,画笔移动到新行的开头,重复5次,画笔回到默认位置,线条消失。 我不想分别为所有5个周期编写动画代码,所以我使用for循环将动画插入到队列中。一切正常,除了最愚蠢的事情——我无法显示当前的行号。代码如下:jQuery-animate+;在for cycle的队列中显示(),jquery,Jquery,我有一个非常具体的问题,我甚至不知道在谷歌上找什么。。。 我正在尝试创建一个动画字母。在一个单独的标记中有一支笔和5行,它们都在一个容器元素中,相对定位,有它们自己的ID,并且这些行是隐藏的(都在它们应该出现的地方)。动画是这样的:画笔沿对角线移动,出现一条线,画笔移动到新行的开头,重复5次,画笔回到默认位置,线条消失。 我不想分别为所有5个周期编写动画代码,所以我使用for循环将动画插入到队列中。一切正常,除了最愚蠢的事情——我无法显示当前的行号。代码如下: var penAnimating
var penAnimating = false;
function animateLetter() {
var pen = $('#form_decor_pen');
var startRight = pen.css('right');
var startTop = pen.css('top');
if (!penAnimating) {
penAnimating = true;
for (var i=1; i<=5; i++) {
pen.animate( {
right: '-=26',
top: '-=10',
},{
duration: 600,
queue: 'penAnimation'
});
问题是,我总是输出5—循环结束时的数字
if (i<5) {
pen.animate({
right: '+=26',
top: '+=20',
},{
duration: 300,
queue: 'penAnimation'
});
} else {
pen.animate({
right: startRight,
top: startTop,
},{
duration: 300,
queue: 'penAnimation',
complete: function() {
penAnimating = false;
}
});
}
}
pen.dequeue('penAnimation');
}
}
if(i当您有一个for循环,其中包含异步调用时,for变量的值将是最后一个值。除非您将代码放入闭包中
将for循环更改为for-loop-with-a-closure
for (var i=1; i<=5; i++) {
(function(i){
// the second i is now in a closure.
})(i);
}
用于(VaR i=1;iNoNo有任何想法吗?好像这个数字在循环之后被插入队列中。但是为什么?我是如何克服这个问题的?谢谢指点我正确的方向,但是我仍然不知道如何精确地实现它。请您具体说明我应该怎样编辑中间部分中的代码才能工作?我试过SEV。有很多种方法,但都不能用。你还需要什么吗?
for (var i=1; i<=5; i++) {
(function(i){
// the second i is now in a closure.
})(i);
}