我逐渐淡化元素,但它似乎一下子消失了。
如何逐个淡化元素。只有当一个完全消失时,第二个才开始褪色。
我像这样循环和淡化它
$(ele).fadeIn('slow');
答案 0 :(得分:4)
fadeIn有一个在淡入完成时执行的回调。将类elemX添加到每个元素,其中x是淡入淡出的顺序。然后使用以下代码:
startFading(1);
function startFading(order) {
$(".ele" + order).fadeIn('slow', function() {
if (order < orderMax) {
startFading(order+1);
}
});
}
答案 1 :(得分:3)
我制作了这个快速/简单的jQuery插件,让你做你想要的。 :-)
$.fn.extend({
serial_fade: function(o) {
if(!o.speed || o.speed == undefined || o.speed == null) { o.speed = 'slow'; }
if(!o.fade || o.fade == undefined || o.fade == null) { o.fade = 'in'; }
if(!o.index || o.index == undefined || o.index == null) { o.index = 0; }
var s = this.selector;
if(o.fade.toLowerCase() == 'in') {
return this.eq(o.index).fadeIn(o.speed, function() {
o.index++;
if($(s).eq(o.index).length > 0) {
$(s).serial_fade({speed:o.speed,fade:o.fade,index:o.index});
}
});
} else {
return this.eq(o.index).fadeOut(o.speed, function() {
o.index++;
if($(s).eq(o.index).length > 0) {
$(s).serial_fade({speed:o.speed,fade:o.fade,index:o.index});
}
});
}
}
});
// To call it just do this:
$(ele).serial_fade({speed:'slow',fade:'in'});
// Optionally, you can pass which element you want to start with (0-based):
$('a').serial_fade({speed:'slow',fade:'in',index:2});
// If you want to start with element 2 (3, really) and fade all the rest *out*
// sequentially, verrry slowly:
$(ele).serial_fade({speed:5000,fade:'out',index:2});
它应该像任何其他jQuery方法一样使用任何类型的选择器。我希望这对你有用。
编辑:我对其进行了扩展,以便现在可以淡化和淡出效果。它似乎更有用......
答案 2 :(得分:0)
你可以使这个通用,而不是强迫它只是为了褪色。
function depth(collection, fun, i) {
if (i === undefined)
depth(collection, fun, 0);
else
if (i < collection.length)
fun(collection[i], function(){
depth(collection, fun, i + 1);
});
};
depth($("a"), function(elem, fun) {
$(elem).fadeIn('slow', fun);
});