我有一组通过ajax加载的div(我们说的是6个div,代表6个产品)。
我想要完成的是一个渐进式动画,就像上一个div的动画完成后每个div的jquery.fadeIn()一样。这样做的最佳方式是什么?
我这样想:
答案 0 :(得分:3)
您可以构建自己的小插件来对元素进行递归调用以按顺序淡化它们。这样的事情应该有效:
$.fn.queuedFadeIn = function(speed) {
var elem = $(this);
if(elem.length > 0) {
elem.eq(0).fadeIn(speed, function() {
elem.slice(1).queuedFadeIn(speed);
});
}
}
$('.div_selector').queuedFadeIn(1000);
这应该一个接一个地淡化它们。伪代码中的相同内容使事情变得更加清晰:
# If there are elements in the selection:
# Find the first element in selection, fade it in
# After fade in, call itself, discarding the first element
答案 1 :(得分:1)
animate函数中有一个回调函数,旨在代码完成后运行。
答案 2 :(得分:0)
大多数jQuery效果都支持回调函数。所以你所概述的应该有效。
答案 3 :(得分:0)
这是另一种做法。有点奇怪,但它确实有效。
var callbacks = [];
$.each(["f", "e", "d", "c", "b", "a"], function(index, id) {
callbacks[index] = function() {
$("#" + id).fadeIn(callbacks[index - 1]);
};
});
callbacks[5]();