aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Sherov <mike.sherov@gmail.com>2013-01-15 23:09:35 -0500
committerDave Methvin <dave.methvin@gmail.com>2013-01-15 23:34:22 -0500
commit10cc33e27beb56e41bea1274bc3b51b1c59af9af (patch)
treec0831dedb86da9f755073bfde5fb140e81bcd7bc
parent86278d40ae86ecd45786eebcb20b72564f2bb53f (diff)
downloadjquery-10cc33e27beb56e41bea1274bc3b51b1c59af9af.tar.gz
jquery-10cc33e27beb56e41bea1274bc3b51b1c59af9af.zip
Fix #13183: Wrong animation initial value calc. Ref gh-1136.
-rw-r--r--src/css.js2
-rw-r--r--src/effects.js4
-rw-r--r--test/unit/effects.js31
3 files changed, 27 insertions, 10 deletions
diff --git a/src/css.js b/src/css.js
index 2a7172759..e2dcb5018 100644
--- a/src/css.js
+++ b/src/css.js
@@ -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;
}
diff --git a/src/effects.js b/src/effects.js
index 1eee0a991..e1c11dca5 100644
--- a/src/effects.js
+++ b/src/effects.js
@@ -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;
},
diff --git a/test/unit/effects.js b/test/unit/effects.js
index 16b4c15e5..3f986097e 100644
--- a/test/unit/effects.js
+++ b/test/unit/effects.js
@@ -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();
+ }
});
});