]> source.dussan.org Git - jquery-ui.git/commitdiff
Class Animation: Use .attr( "class" ) instead of .attr( "className" ) and adjust...
authorScott González <scott.gonzalez@gmail.com>
Wed, 27 Apr 2011 14:42:21 +0000 (10:42 -0400)
committerScott González <scott.gonzalez@gmail.com>
Wed, 27 Apr 2011 14:42:21 +0000 (10:42 -0400)
ui/jquery.effects.core.js

index 573cb2554ea98a6dca07b219c3985d7b96b07b4a..581fb08612b086fd6c974c78f9437867750daffc 100644 (file)
@@ -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 );
        });
 };