aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgnarf <gnarf@gnarf.net>2011-05-10 16:25:08 -0500
committergnarf <gnarf@gnarf.net>2011-05-10 16:25:08 -0500
commit783f134aaa333b9e8795c701d8fd741de387cb0e (patch)
tree9a944fb8d22c6e8bf9cddf37be3191c59c7c45a4
parent27a7deebf299e1673e8b452476be02e486bba2c6 (diff)
downloadjquery-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.js21
-rw-r--r--ui/jquery.effects.pulsate.js7
-rw-r--r--ui/jquery.effects.shake.js7
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();
});