/* * throttledresize: special jQuery event that happens at a reduced rate compared to "resize" * * latest version and complete README available on Github: * https://github.com/louisremi/jquery-smartresize * * Copyright 2012 @louis_remi * Licensed under the MIT license. * * This saved you an hour of work? * Send me music http://www.amazon.co.uk/wishlist/HNTU0468LQON */ (function($) { var $event = $.event, $special, dummy = {_:0}, frame = 0, wasResized, animRunning; $special = $event.special.throttledresize = { setup: function() { $( this ).on( "resize", $special.handler ); }, teardown: function() { $( this ).off( "resize", $special.handler ); }, handler: function( event, execAsap ) { // Save the context var context = this, args = arguments; wasResized = true; if ( !animRunning ) { setInterval(function(){ frame++; if ( frame > $special.threshold && wasResized || execAsap ) { // set correct event type event.type = "throttledresize"; $event.dispatch.apply( context, args ); wasResized = false; frame = 0; } if ( frame > 9 ) { $(dummy).stop(); animRunning = false; frame = 0; } }, 30); animRunning = true; } }, threshold: 0 }; })(jQuery);