]> source.dussan.org Git - jquery.git/commitdiff
Fix #13183: Wrong animation initial value calc. Close 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:28:56 +0000 (23:28 -0500)
src/css.js
src/effects.js
test/unit/effects.js

index 7ddce0a04456b38afb8fe8ada7bffb0f6c5274ba..03437c2a739a47ae323a3cae061b42a59483c54b 100644 (file)
@@ -265,7 +265,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 f725210247a142d68d3c83d180cd652a65082971..189f65ce599e942c03baa6405b07de4751480f98 100644 (file)
@@ -427,11 +427,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 1edecc07a0e3c760c03b9e0b66b993a1228a728a..aa061058bfb98ff7a367dbae769c6d00d58c6680 100644 (file)
@@ -283,14 +283,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();
+               }
        });
 });