jQuery同步操作

时间:2009-05-06 12:37:45

标签: jquery

我逐渐淡化元素,但它似乎一下子消失了。

如何逐个淡化元素。只有当一个完全消失时,第二个才开始褪色。

我像这样循环和淡化它

$(ele).fadeIn('slow');

3 个答案:

答案 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);
});