如何确定最后一个动画元素
how to determine last element being animated
我正在使用jQuery的animate函数来动画一系列匹配元素,但是我想在调用新函数之前确定最后一个匹配元素何时完成动画。我该怎么做呢?有没有一种方法可以做到没有。each()函数?
这是我的代码:
使用每个函数:
var imageLen = $('.option_image').length -1; //Determine index of total images
$('.option_image').each(function(index){
var imageDelay = index*delayTime;
$(this).delay(imageDelay).animate({ 'backgroundPositionY' : '0px', 'opacity' : '1'},fadeTime,function(){
$('.option_title').css('opacity','1');
if (index == imageLen){
//If all have been iterated through - perform this function
}
})
});
但是我想做的是:
$('.option_image').animate({ 'backgroundPositionY' : '0px', 'opacity' : '1'},fadeTime,function(){
if (index == imageLen){
$('.option_title').css('opacity','1');
$('#back').fadeTo(fadeTime,1);
$('#restart').fadeTo(fadeTime,1);
}
});
显然不能工作,因为"index"没有定义
尝试使用延迟对象:
$('.option_image').animate({
'backgroundPositionY': '0px',
'opacity': '1'
}, fadeTime).promise().done(function() {
$('.option_title').css('opacity', '1');
$('#back').fadeTo(fadeTime, 1);
$('#restart').fadeTo(fadeTime, 1);
});
需要jQuery 1.6+
您可以使用闭包,像这样:
var index = 0;
var length = elements.length - 1;
elements.animate(properties, speed, function() {
if (index == length) {
doSomeStuff();
} else index++;
});
jQuery动画被添加到队列中。您可以在完整的回调中测试队列的大小。我想这样可以:
$('.option_image').animate({ 'backgroundPositionY' : '0px', 'opacity' : '1'},fadeTime,function(){
if ($('.option_image').queue("fx").length === 0){
$('.option_title').css('opacity','1');
$('#back').fadeTo(fadeTime,1);
$('#restart').fadeTo(fadeTime,1);
}
});
相关文章:
- 使用svg和javascript将一个类的元素动画化为另一个类
- 如何在一个元素动画之后延迟
- 将列表元素动画制作到顶部
- 如何在山露网站上完成元素动画
- 制作AngularJS路线之间的英雄元素动画
- 设置元素动画jquery
- 我将如何修复由于上面的元素动画而移动的元素
- 修复了元素动画滚动主体在顶部
- 无法在 jquery 中获取元素动画以等待另一个元素动画
- Javascript - 从任何位置将元素动画到屏幕中心
- 在设置元素动画的过程中降低速度
- 跳转到元素动画
- jQuery鼠标后跟事件与元素动画相结合
- 使用Jquery将元素动画制作到窗口的右边缘
- Jquery/CSS带回调的顺序元素动画
- 如何在jquery中停止以前的dom元素动画
- 元素.动画,在动画完成后应用样式更改
- 在Bootstrap Modal中检测滚动使滚动上的每个元素动画化
- 当绑定值发生变化时,如何使元素动画化?
- 检测子元素动画