(function ($) { $.fn.fadeTransition = function(options) { var options = $.extend({pauseTime: 4000, transitionTime: 1500}, options); Trans = function(obj) { var timer = null; var current = 0; var els = $("> *", obj).css("display", "none").css("left", "0").css("top", "0").css("position", "absolute"); $(obj).css("position", "relative"); $(els[current]).css("display", "block"); function transition() { var next = (current + 1) % els.length | 0; $(els[current]).fadeOut(options.transitionTime); $(els[next]).fadeIn(options.transitionTime); current = next; cue(); }; function cue() { if ($("> *", obj).length < 2) return false; if (timer) clearTimeout(timer); timer = setTimeout(transition, options.pauseTime); }; cue(); }; return this.each(function() { var t = new Trans(this); }); } })(jQuery);