(function($){ $.fn.vTicker = function(options) { var defaults = { speed: 2000, pause: 4000, showItems: 1, animation: 'fade' }; var options = $.extend(defaults, options); moveUp = function(obj, height){ obj = obj.children('ul'); first = obj.children('li:first').clone(true); obj.animate({ top: '-=' + height + 'px' }, /* callback */ options.speed, function() { $(this).children('li:first').remove(); $(this).css('top', '0px'); } ); if(options.animation == 'fade') { obj.children('li:first').fadeOut(options.speed); obj.children('li:last').fadeIn(options.speed); } if(options.animation == 'implode') { obj.children('li:first').fadeOut(options.speed*2); obj.children('li:last').fadeIn(options.speed); } first.appendTo(obj); }; return this.each(function() { obj = $(this); maxHeight = 0; obj.css({overflow: 'hidden', position: 'relative'}) .children('ul').css({position: 'absolute', margin: 0, padding: 0}) .children('li').css({margin: 0, padding: 0}); obj.children('ul').children('li').each(function(){ if($(this).height() > maxHeight) { maxHeight = $(this).height(); } }); obj.children('ul').children('li').each(function(){ $(this).height(maxHeight); }); obj.height(maxHeight * options.showItems); interval = setInterval('moveUp(obj, maxHeight)', options.pause); }); }; })(jQuery);