/* * jQuery HoverPulse Plugin by M. Alsup * Examples and docs at: http://malsup.com/jquery/hoverpulse/ * Dual licensed under the MIT and GPL * Requires: jQuery v1.2.6 or later * @version: 1.01 26-FEB-2009 */ (function($) { $.fn.hoverpulse = function(options) { // in 1.3+ we can fix mistakes with the ready state if (this.length == 0) { if (!$.isReady && this.selector) { var s = this.selector, c = this.context; $(function() { $(s,c).hoverpulse(options); }); } return this; } var opts = $.extend({}, $.fn.hoverpulse.defaults, options); // parent must be relatively positioned this.parent().css({ position: 'relative' }); // pulsing element must be absolutely positioned this.css({ position: 'absolute', top: 0, left: 0 }); this.each(function() { var $this = $(this); var w = $this.width(), h = $this.height(); $this.data('hoverpulse.size', { w: parseInt(w), h: parseInt(h) }); }); // bind hover event for behavior return this.hover( // hover over function() { var $this = $(this); $this.parent().css('z-index', opts.zIndexActive); var size = $this.data('hoverpulse.size'); var w = size.w, h = size.h; $this.stop().animate({ top: ('-'+opts.size+'px'), left: ('-'+opts.size+'px'), height: (h+2*opts.size)+'px', width: (w+2*opts.size)+'px' }, opts.speed); }, // hover out function() { var $this = $(this); var size = $this.data('hoverpulse.size'); var w = size.w, h = size.h; $this.stop().animate({ top: 0, left: 0, height: (h+'px'), width: (w+'px') }, opts.speed, function() { $this.parent().css('z-index', opts.zIndexNormal); }); } ); }; $.fn.hoverpulse.defaults = { size: 20, speed: 200, zIndexActive: 100, zIndexNormal: 1 }; })(jQuery);