diff options
author | gnarf <gnarf@gnarf.net> | 2011-05-10 16:25:08 -0500 |
---|---|---|
committer | gnarf <gnarf@gnarf.net> | 2011-05-10 16:25:08 -0500 |
commit | 783f134aaa333b9e8795c701d8fd741de387cb0e (patch) | |
tree | 9a944fb8d22c6e8bf9cddf37be3191c59c7c45a4 | |
parent | 27a7deebf299e1673e8b452476be02e486bba2c6 (diff) | |
download | jquery-ui-783f134aaa333b9e8795c701d8fd741de387cb0e.tar.gz jquery-ui-783f134aaa333b9e8795c701d8fd741de387cb0e.zip |
effects: Updating bounce/pulsate/shake to fire callbacks before the next anim starts
-rw-r--r-- | ui/jquery.effects.bounce.js | 21 | ||||
-rw-r--r-- | ui/jquery.effects.pulsate.js | 7 | ||||
-rw-r--r-- | ui/jquery.effects.shake.js | 7 |
3 files changed, 19 insertions, 16 deletions
diff --git a/ui/jquery.effects.bounce.js b/ui/jquery.effects.bounce.js index bb386a4f4..9e1117ce9 100644 --- a/ui/jquery.effects.bounce.js +++ b/ui/jquery.effects.bounce.js @@ -79,10 +79,8 @@ $.effects.effect.bounce = function(o) { upAnim = {}; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - // add the finish callback to the last animation if we aren't hiding el.animate( upAnim, speed, easing ) - .animate( downAnim, speed, easing, - ( ( i === times - 1 ) && !hide ) ? finish : undefined ); + .animate( downAnim, speed, easing ); distance = hide ? distance * 2 : distance / 2; } @@ -92,24 +90,25 @@ $.effects.effect.bounce = function(o) { upAnim = { opacity: 0 }; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - el.animate( upAnim, speed, easing, function(){ - el.hide(); - finish(); - }); + el.animate( upAnim, speed, easing ); } - - function finish() { + + el.queue( function( next ) { + if ( hide ) { + el.hide(); + } $.effects.restore( el, props ); $.effects.removeWrapper( el ); if ( o.complete ) { o.complete.apply( el[ 0 ] ); } - } + next(); + }); // inject all the animations we just queued to be first in line (after "inprogress") if ( queuelen > 1) { queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims ) ) ); + [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } next(); diff --git a/ui/jquery.effects.pulsate.js b/ui/jquery.effects.pulsate.js index 54c5c10af..a0ddf51fd 100644 --- a/ui/jquery.effects.pulsate.js +++ b/ui/jquery.effects.pulsate.js @@ -43,19 +43,22 @@ $.effects.effect.pulsate = function( o ) { elem.animate({ opacity: animateTo - }, duration, o.easing, function() { + }, duration, o.easing); + + elem.queue( function( next ) { if ( hide ) { elem.hide(); } if ( o.complete ) { o.complete.apply( this ); } + next(); }); // We just queued up "anims" animations, we need to put them next in the queue if ( queuelen > 1) { queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims ) ) ); + [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } next(); }); diff --git a/ui/jquery.effects.shake.js b/ui/jquery.effects.shake.js index cd26dc5af..550329ca4 100644 --- a/ui/jquery.effects.shake.js +++ b/ui/jquery.effects.shake.js @@ -54,20 +54,21 @@ $.effects.effect.shake = function( o ) { }; el .animate( animation1, speed, o.easing ) - .animate( animation, speed / 2, o.easing, function() { + .animate( animation, speed / 2, o.easing ) + .queue( function( next ) { if ( mode === "hide" ) { el.hide(); } - // Last shake $.effects.restore( el, props ); $.effects.removeWrapper( el ); $.isFunction( o.complete ) && o.complete.apply( this, arguments ); + next(); }); // inject all the animations we just queued to be first in line (after "inprogress") if ( queuelen > 1) { queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims ) ) ); + [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } el.dequeue(); }); |