@@ -6,8 +6,7 @@ var ralpha = /alpha\([^)]*\)/i,
66 rupper = / ( [ A - Z ] | ^ m s ) / g,
77 rnumpx = / ^ - ? \d + (?: p x ) ? $ / i,
88 rnum = / ^ - ? \d / ,
9- rrelNum = / ^ [ + \- ] = / ,
10- rrelNumFilter = / [ ^ + \- \. \d e ] + / g,
9+ rrelNum = / ^ ( [ - + ] ) = ( [ - + . \d e ] + ) / ,
1110
1211 cssShow = { position : "absolute" , visibility : "hidden" , display : "block" } ,
1312 cssWidth = [ "Left" , "Right" ] ,
@@ -84,18 +83,18 @@ jQuery.extend({
8483 if ( value !== undefined ) {
8584 type = typeof value ;
8685
87- // Make sure that NaN and null values aren't set. See: #7116
88- if ( type === "number" && isNaN ( value ) || value == null ) {
89- return ;
90- }
91-
9286 // convert relative number strings (+= or -=) to relative numbers. #7345
93- if ( type === "string" && rrelNum . test ( value ) ) {
94- value = + value . replace ( rrelNumFilter , "" ) + parseFloat ( jQuery . css ( elem , name ) ) ;
87+ if ( type === "string" && ( ret = rrelNum . exec ( value ) ) ) {
88+ value = ( + ( ret [ 1 ] + 1 ) * + ret [ 2 ] ) + parseFloat ( jQuery . css ( elem , name ) ) ;
9589 // Fixes bug #9237
9690 type = "number" ;
9791 }
9892
93+ // Make sure that NaN and null values aren't set. See: #7116
94+ if ( value == null || type === "number" && isNaN ( value ) ) {
95+ return ;
96+ }
97+
9998 // If a number was passed in, add 'px' to the (except for certain CSS properties)
10099 if ( type === "number" && ! jQuery . cssNumber [ origName ] ) {
101100 value += "px" ;
0 commit comments