summaryrefslogtreecommitdiff
path: root/resources/jquery/jquery.delayedBind.js
diff options
context:
space:
mode:
Diffstat (limited to 'resources/jquery/jquery.delayedBind.js')
-rw-r--r--resources/jquery/jquery.delayedBind.js76
1 files changed, 0 insertions, 76 deletions
diff --git a/resources/jquery/jquery.delayedBind.js b/resources/jquery/jquery.delayedBind.js
deleted file mode 100644
index 40f3d44e..00000000
--- a/resources/jquery/jquery.delayedBind.js
+++ /dev/null
@@ -1,76 +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 ) {
- if ( arguments.length === 3 ) {
- // Shift optional parameter down
- callback = data;
- data = undefined;
- }
- 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 ( timerID !== null ) {
- 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 ( timerID !== null ) {
- 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 ) );