]> source.dussan.org Git - jquery.git/commitdiff
Fix #13183: Wrong animation initial value calc. Ref gh-1136.
authorMike Sherov <mike.sherov@gmail.com>
Wed, 16 Jan 2013 04:09:35 +0000 (23:09 -0500)
committerDave Methvin <dave.methvin@gmail.com>
Wed, 16 Jan 2013 04:34:22 +0000 (23:34 -0500)
src/css.js
src/effects.js
test/unit/effects.js

index 2a7172759ae53b15891bc7a3d9a004f05aa070c2..e2dcb501878a53064759d923053475b718e408a3 100644 (file)
@@ -263,7 +263,7 @@ jQuery.extend({
                }
 
                // Return, converting to number if forced or a qualifier was provided and val looks numeric
-               if ( extra ) {
+               if ( extra === "" || extra ) {
                        num = parseFloat( val );
                        return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
                }
index 1eee0a991f20fbe60fd6a94ce22f9491c814623a..e1c11dca5e166af5de9392ab397ed8b1589aa651 100644 (file)
@@ -418,11 +418,11 @@ Tween.propHooks = {
                                return tween.elem[ tween.prop ];
                        }
 
-                       // passing a non empty string as a 3rd parameter to .css will automatically
+                       // passing an empty string as a 3rd parameter to .css will automatically
                        // attempt a parseFloat and fallback to a string if the parse fails
                        // so, simple values such as "10px" are parsed to Float.
                        // complex values such as "rotate(1rad)" are returned as is.
-                       result = jQuery.css( tween.elem, tween.prop, "auto" );
+                       result = jQuery.css( tween.elem, tween.prop, "" );
                        // Empty strings, null, undefined and "auto" are converted to 0.
                        return !result || result === "auto" ? 0 : result;
                },
index 16b4c15e5ee5f179d3ab03b00b3914f4fbcf9b8c..3f986097e73d7d60ef8e02cdb5259be8ea64d190 100644 (file)
@@ -257,14 +257,31 @@ test("animate native inline width/height", function() {
                        });
 });
 
-test("animate block width/height", function() {
-       expect(3);
+test( "animate block width/height", function() {
+       expect( 3 );
        stop();
-       jQuery("#foo").css({ display: "block", width: 20, height: 20 }).animate({ width: 42, height: 42 }, 100, function() {
-               equal( jQuery(this).css("display"), "block", "inline-block was not set on block element when animating width/height" );
-               equal( this.offsetWidth, 42, "width was animated" );
-               equal( this.offsetHeight, 42, "height was animated" );
-               start();
+
+       jQuery("<div>").appendTo("#qunit-fixture").css({
+               display: "block",
+               width: 20,
+               height: 20,
+               paddingLeft: 60
+       }).animate({
+               width: 42,
+               height: 42
+       }, {
+               duration: 100,
+               step: function() {
+                       if ( jQuery( this ).width() > 42 ) {
+                               ok( false, "width was incorrectly augmented during animation" );
+                       }
+               },
+               complete: function() {
+                       equal( jQuery( this ).css("display"), "block", "inline-block was not set on block element when animating width/height" );
+                       equal( jQuery( this ).width(), 42, "width was animated" );
+                       equal( jQuery( this ).height(), 42, "height was animated" );
+                       start();
+               }
        });
 });