jQuery同步操作

原文 标签 jquery

我正在一个一个地淡化元素,但似乎所有元素都同时淡化了。

如何让元素一一淡入淡出。只有当一个完全消失时,第二个才应该开始消失。

我像这样循环并淡化它

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

最佳答案

我制作了这个快速/简单的 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 方法一样适用于任何类型的选择器。我希望这对你有用。

编辑: 我扩展了它,以便它现在可以进行淡入和淡出。这样看起来更有用......

关于jQuery同步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829355/

相关文章:

javascript - 输入自动调整文本区域会一直聚焦在元素的顶部

javascript - 在DOM到内容脚本中插入了Button

javascript - SetTimeout功能未发生

c# - 将jQuery Dynatree与ASP.NET(而非MVC)中的复选框一起使用

jquery - 使用 jQuery 延迟管道的最简洁方法是什么?

javascript - 设置和清除间隔以自动滚动fullPage.js中的部分

jquery 表单验证不允许用户名字段的空间?

javascript - jQuery Mobile $(“#popup”)。popup(“open”);转换页面后无法正常工作

javascript - jQuery .stop()在动画上不起作用

jquery - jQuery主题无法正确加载