From 31268449b9255b21fad4bafd7da13c910a00af37 Mon Sep 17 00:00:00 2001 From: gnarf Date: Sat, 7 May 2011 19:18:52 -0400 Subject: [PATCH] Landing pull request 372. Test for numeric properties was using wrong variable. Fixes #9074. More Details: - https://github.com/jquery/jquery/pull/372 --- src/effects.js | 3 +-- test/unit/effects.js | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/effects.js b/src/effects.js index 832ef5da..7023461b 100644 --- a/src/effects.js +++ b/src/effects.js @@ -202,7 +202,6 @@ jQuery.fn.extend({ for ( p in prop ) { e = new jQuery.fx( this, opt, p ); - val = prop[p]; if ( rfxtypes.test(val) ) { @@ -214,7 +213,7 @@ jQuery.fn.extend({ if ( parts ) { end = parseFloat( parts[2] ); - unit = parts[3] || ( jQuery.cssNumber[ name ] ? "" : "px" ); + unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" ); // We need to compute starting value if ( unit !== "px" ) { diff --git a/test/unit/effects.js b/test/unit/effects.js index d0518217..2a43c115 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -32,7 +32,8 @@ test("show()", function() { hiddendiv.css("display",""); - var pass = true, div = jQuery("#qunit-fixture div"); + var pass = true; + div = jQuery("#qunit-fixture div"); div.show().each(function(){ if ( this.style.display == "none" ) pass = false; }); @@ -582,7 +583,7 @@ jQuery.checkOverflowDisplay = function(){ equals(jQuery.css( this, "display" ), "inline", "Display shouldn't be tampered with."); start(); -} +}; test( "jQuery.fx.prototype.cur()", 6, function() { var div = jQuery( "
" ).appendTo( "#qunit-fixture" ).css({ @@ -901,7 +902,7 @@ jQuery.makeTest = function( text ){ .after( elem ); return elem; -} +}; jQuery.makeTest.id = 1; @@ -993,3 +994,30 @@ test("animate unit-less properties (#4966)", 2, function() { start(); }); }); + +test( "animate properties missing px w/ opacity as last (#9074)", 2, function() { + expect( 6 ); + stop(); + var div = jQuery( "
" ) + .appendTo( "#qunit-fixture" ); + function cssInt( prop ) { + return parseInt( div.css( prop ), 10 ); + } + equal( cssInt( "marginLeft" ), 0, "Margin left is 0" ); + equal( cssInt( "left" ), 0, "Left is 0" ); + div.animate({ + left: 200, + marginLeft: 200, + opacity: 0 + }, 1000); + setTimeout(function() { + var ml = cssInt( "marginLeft" ), + l = cssInt( "left" ); + notEqual( ml, 0, "Margin left is not 0 after partial animate" ); + notEqual( ml, 200, "Margin left is not 200 after partial animate" ); + notEqual( l, 0, "Left is not 0 after partial animate" ); + notEqual( l, 200, "Left is not 200 after partial animate" ); + div.stop().remove(); + start(); + }, 100); +});