0

我创建了一个自定义 jquery 插件。它一个接一个地显示元素。

我只是delay()用来做一个之后。

但是,只有第一次延迟有效,然后所有其他元素与第一次延迟同时出现。

我的插件

(function($){
    $.fn.OneByOne = function( options ){

        var defaults = {
            startDelay:5,           
            duration: 1500,
            nextDelay: 2000
        };

        var options = $.extend(defaults, options);

        return this.each(function(){

            var o =options;
            var obj = $(this);                
            var a = $('a', obj);
            var delay = o.startDelay;

            obj.delay(delay).fadeIn(o.duration);
            delay += o.nextDelay;
        });
    };
})(jQuery);
4

1 回答 1

1

将您的delayvar 放在函数之外:

(function($){
$.fn.OneByOne = function( options ){

    var defaults = {
        startDelay:5,           
        duration: 1500,
        nextDelay: 2000
    };

    var options = $.extend(defaults, options);
    var delay = options.startDelay;

    return this.each(function(){

        var o =options;
        var obj = $(this);                
        var a = $('a', obj);

        obj.delay(delay).fadeIn(o.duration);
        delay += o.nextDelay;
    });
};
})(jQuery);
于 2013-05-12T02:34:50.883 回答