X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/resources/jquery/jquery.delayedBind.js diff --git a/resources/jquery/jquery.delayedBind.js b/resources/jquery/jquery.delayedBind.js deleted file mode 100644 index 6d972996..00000000 --- a/resources/jquery/jquery.delayedBind.js +++ /dev/null @@ -1,68 +0,0 @@ -(function( $ ) { -/** - * Function that escapes spaces in event names. This is needed because - * "_delayedBind-foo bar-1000" refers to two events - */ -function encodeEvent( event ) { - return event.replace( /-/g, '--' ).replace( / /g, '-' ); -} - -$.fn.extend( { - /** - * Bind a callback to an event in a delayed fashion. - * In detail, this means that the callback will be called a certain - * time after the event fires, but the timer is reset every time - * the event fires. - * @param timeout Number of milliseconds to wait - * @param event Name of the event (string) - * @param data Data to pass to the event handler (optional) - * @param callback Function to call - */ - delayedBind: function( timeout, event, data, callback ) { - var encEvent = encodeEvent( event ); - return this.each( function() { - var that = this; - // Bind the top half - // Do this only once for every (event, timeout) pair - if ( !( $(this).data( '_delayedBindBound-' + encEvent + '-' + timeout ) ) ) { - $(this).data( '_delayedBindBound-' + encEvent + '-' + timeout, true ); - $(this).bind( event, function() { - var timerID = $(this).data( '_delayedBindTimerID-' + encEvent + '-' + timeout ); - // Cancel the running timer - if ( typeof timerID != 'undefined' ) - clearTimeout( timerID ); - timerID = setTimeout( function() { - $(that).trigger( '_delayedBind-' + encEvent + '-' + timeout ); - }, timeout ); - $(this).data( '_delayedBindTimerID-' + encEvent + '-' + timeout, timerID ); - } ); - } - - // Bottom half - $(this).bind( '_delayedBind-' + encEvent + '-' + timeout, data, callback ); - } ); - }, - - /** - * Cancel the timers for delayed events on the selected elements. - */ - delayedBindCancel: function( timeout, event ) { - var encEvent = encodeEvent( event ); - return this.each( function() { - var timerID = $(this).data( '_delayedBindTimerID-' + encEvent + '-' + timeout ); - if ( typeof timerID != 'undefined' ) - clearTimeout( timerID ); - } ); - }, - - /** - * Unbind an event bound with delayedBind() - */ - delayedBindUnbind: function( timeout, event, callback ) { - var encEvent = encodeEvent( event ); - return this.each( function() { - $(this).unbind( '_delayedBind-' + encEvent + '-' + timeout, callback ); - } ); - } -} ); -} )( jQuery ); \ No newline at end of file