aboutsummaryrefslogtreecommitdiffstats
path: root/ui/jquery.effects.core.js
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2011-04-27 10:42:21 -0400
committerScott González <scott.gonzalez@gmail.com>2011-04-27 10:42:21 -0400
commit60d4e0ae42efd780e6147f981c55bdfeafdfaa54 (patch)
tree885d028f7033ff0d4f0f3966b7fed8396eb01762 /ui/jquery.effects.core.js
parentcd61fb1b55cc0f7cc2dc206170b1d95381edad9d (diff)
downloadjquery-ui-60d4e0ae42efd780e6147f981c55bdfeafdfaa54.tar.gz
jquery-ui-60d4e0ae42efd780e6147f981c55bdfeafdfaa54.zip
Class Animation: Use .attr( "class" ) instead of .attr( "className" ) and adjust the queueing logic for jQuery 1.6 compatibility. Fixes #7275 - $.effects.animateClass broken in jQuery 1.6."
Diffstat (limited to 'ui/jquery.effects.core.js')
-rw-r--r--ui/jquery.effects.core.js49
1 files changed, 24 insertions, 25 deletions
diff --git a/ui/jquery.effects.core.js b/ui/jquery.effects.core.js
index 573cb2554..581fb0861 100644
--- a/ui/jquery.effects.core.js
+++ b/ui/jquery.effects.core.js
@@ -234,12 +234,12 @@ $.effects.animateClass = function( value, duration, easing, callback ) {
easing = null;
}
- return this.queue( 'fx', function() {
+ return this.queue(function() {
var that = $( this ),
originalStyleAttr = that.attr( 'style' ) || ' ',
originalStyle = filterStyles( getElementStyles.call( this ) ),
newStyle,
- className = that.attr( 'className' );
+ className = that.attr( 'class' );
$.each( classAnimationActions, function(i, action) {
if ( value[ action ] ) {
@@ -247,32 +247,31 @@ $.effects.animateClass = function( value, duration, easing, callback ) {
}
});
newStyle = filterStyles( getElementStyles.call( this ) );
- that.attr( 'className', className );
-
- that.animate( styleDifference( originalStyle, newStyle ), duration, easing, function() {
- $.each( classAnimationActions, function( i, action ) {
- if ( value[ action ] ) {
- that[ action + 'Class' ]( value[ action ] );
+ that.attr( 'class', className );
+
+ that.animate( styleDifference( originalStyle, newStyle ), {
+ queue: false,
+ duration: duration,
+ easing: easing,
+ complete: function() {
+ $.each( classAnimationActions, function( i, action ) {
+ if ( value[ action ] ) {
+ that[ action + 'Class' ]( value[ action ] );
+ }
+ });
+ // work around bug in IE by clearing the cssText before setting it
+ if ( typeof that.attr( 'style' ) == 'object' ) {
+ that.attr( 'style' ).cssText = '';
+ that.attr( 'style' ).cssText = originalStyleAttr;
+ } else {
+ that.attr( 'style', originalStyleAttr );
}
- });
- // work around bug in IE by clearing the cssText before setting it
- if ( typeof that.attr( 'style' ) == 'object' ) {
- that.attr( 'style' ).cssText = '';
- that.attr( 'style' ).cssText = originalStyleAttr;
- } else {
- that.attr( 'style', originalStyleAttr );
- }
- if ( callback ) {
- callback.apply( this, arguments );
+ if ( callback ) {
+ callback.apply( this, arguments );
+ }
+ $.dequeue( this );
}
});
-
- // $.animate adds a function to the end of the queue
- // but we want it at the front
- var queue = $.queue( this ),
- anim = queue.splice( queue.length - 1, 1 )[ 0 ];
- queue.splice( 1, 0, anim );
- $.dequeue( this );
});
};