@@ -6,8 +6,7 @@ var ralpha = /alpha\([^)]*\)/i,
6
6
rupper = / ( [ A - Z ] | ^ m s ) / g,
7
7
rnumpx = / ^ - ? \d + (?: p x ) ? $ / i,
8
8
rnum = / ^ - ? \d / ,
9
- rrelNum = / ^ [ + \- ] = / ,
10
- rrelNumFilter = / [ ^ + \- \. \d e ] + / g,
9
+ rrelNum = / ^ ( [ - + ] ) = ( [ - + . \d e ] + ) / ,
11
10
12
11
cssShow = { position : "absolute" , visibility : "hidden" , display : "block" } ,
13
12
cssWidth = [ "Left" , "Right" ] ,
@@ -84,18 +83,18 @@ jQuery.extend({
84
83
if ( value !== undefined ) {
85
84
type = typeof value ;
86
85
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
-
92
86
// 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 ) ) ;
95
89
// Fixes bug #9237
96
90
type = "number" ;
97
91
}
98
92
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
+
99
98
// If a number was passed in, add 'px' to the (except for certain CSS properties)
100
99
if ( type === "number" && ! jQuery . cssNumber [ origName ] ) {
101
100
value += "px" ;
0 commit comments