1
1
( function ( jQuery ) {
2
2
3
+ jQuery . cssExpand = [ "Top" , "Right" , "Bottom" , "Left" ] ;
4
+
3
5
var ralpha = / a l p h a \( [ ^ ) ] * \) / i,
4
6
ropacity = / o p a c i t y = ( [ ^ ) ] * ) / ,
5
7
// fixed for IE9, see #8346
6
8
rupper = / ( [ A - Z ] | ^ m s ) / g,
7
- rnum = / ^ [ \- + ] ? (?: \d * \. ) ? \d + $ / i,
9
+ rnumsplit = / ^ ( [ \- + ] ? (?: \d * \. ) ? \d + ) ( . * ) $ / i,
8
10
rnumnonpx = / ^ - ? (?: \d * \. ) ? \d + (? ! p x ) [ ^ \d \s ] + $ / i,
9
11
rrelNum = / ^ ( [ \- + ] ) = ( [ \- + . \d e ] + ) / ,
10
12
rmargin = / ^ m a r g i n / ,
11
13
12
14
cssShow = { position : "absolute" , visibility : "hidden" , display : "block" } ,
13
15
14
16
// order is important!
15
- cssExpand = [ "Top" , "Right" , "Bottom" , "Left" ] ,
17
+ cssExpand = jQuery . cssExpand ,
16
18
cssPrefixes = [ "O" , "Webkit" , "Moz" , "ms" ] ,
17
19
18
20
curCSS ;
@@ -264,6 +266,13 @@ if ( document.defaultView && document.defaultView.getComputedStyle ) {
264
266
} ;
265
267
}
266
268
269
+ function setPositiveNumber ( elem , value ) {
270
+ var matches = rnumsplit . exec ( value ) ;
271
+ return matches ?
272
+ Math . max ( 0 , matches [ 1 ] ) + ( matches [ 2 ] || "px" )
273
+ : value ;
274
+ }
275
+
267
276
function getWidthOrHeight ( elem , name , extra ) {
268
277
269
278
// Start with offset property, which is equivalent to the border-box value
@@ -348,11 +357,7 @@ jQuery.each([ "height", "width" ], function( i, name ) {
348
357
}
349
358
} ,
350
359
351
- set : function ( elem , value ) {
352
- return rnum . test ( value ) ?
353
- value + "px" :
354
- value ;
355
- }
360
+ set : setPositiveNumber
356
361
} ;
357
362
} ) ;
358
363
@@ -436,7 +441,6 @@ jQuery.each({
436
441
padding : "" ,
437
442
border : "Width"
438
443
} , function ( prefix , suffix ) {
439
-
440
444
jQuery . cssHooks [ prefix + suffix ] = {
441
445
expand : function ( value ) {
442
446
var i ,
@@ -453,6 +457,10 @@ jQuery.each({
453
457
return expanded ;
454
458
}
455
459
} ;
460
+
461
+ if ( ! rmargin . test ( prefix ) ) {
462
+ jQuery . cssHooks [ prefix + suffix ] . set = setPositiveNumber ;
463
+ }
456
464
} ) ;
457
465
458
466
} ) ( jQuery ) ;
0 commit comments