mirror of
https://github.com/jquery/jquery.git
synced 2024-10-05 11:34:18 +00:00
Fixes #10021. Allow negative relative values for .css()
(e.g., "+=-20px"
) since .animate()
already allows it. Useful for when the relative value is a variable.
This commit is contained in:
parent
b22c904652
commit
015328787c
17
src/css.js
17
src/css.js
@ -6,8 +6,7 @@ var ralpha = /alpha\([^)]*\)/i,
|
||||
rupper = /([A-Z]|^ms)/g,
|
||||
rnumpx = /^-?\d+(?:px)?$/i,
|
||||
rnum = /^-?\d/,
|
||||
rrelNum = /^[+\-]=/,
|
||||
rrelNumFilter = /[^+\-\.\de]+/g,
|
||||
rrelNum = /^([+\-])=([+\-\.\de]+)/,
|
||||
|
||||
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
||||
cssWidth = [ "Left", "Right" ],
|
||||
@ -84,18 +83,18 @@ jQuery.extend({
|
||||
if ( value !== undefined ) {
|
||||
type = typeof value;
|
||||
|
||||
// convert relative number strings (+= or -=) to relative numbers. #7345
|
||||
if ( type === "string" && (ret = rrelNum.exec( value )) ) {
|
||||
value = (ret[1] === "+"? +ret[2] : -ret[2]) + parseFloat( jQuery.css( elem, name ) );
|
||||
// Fixes bug #9237
|
||||
type = "number";
|
||||
}
|
||||
|
||||
// Make sure that NaN and null values aren't set. See: #7116
|
||||
if ( type === "number" && isNaN( value ) || value == null ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// convert relative number strings (+= or -=) to relative numbers. #7345
|
||||
if ( type === "string" && rrelNum.test( value ) ) {
|
||||
value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) );
|
||||
// Fixes bug #9237
|
||||
type = "number";
|
||||
}
|
||||
|
||||
// If a number was passed in, add 'px' to the (except for certain CSS properties)
|
||||
if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
|
||||
value += "px";
|
||||
|
@ -109,7 +109,7 @@ test("css(String|Hash)", function() {
|
||||
});
|
||||
|
||||
test("css() explicit and relative values", function() {
|
||||
expect(27);
|
||||
expect(29);
|
||||
var $elem = jQuery("#nothiddendiv");
|
||||
|
||||
$elem.css({ width: 1, height: 1, paddingLeft: "1px", opacity: 1 });
|
||||
@ -141,6 +141,12 @@ test("css() explicit and relative values", function() {
|
||||
$elem.css( "width", "-=9px" );
|
||||
equals( $elem.width(), 1, "'-=9px' on width (params)" );
|
||||
|
||||
$elem.css( "width", "-=-9px" );
|
||||
equals( $elem.width(), 10, "'-=-9px' on width (params)" );
|
||||
|
||||
$elem.css( "width", "+=-9px" );
|
||||
equals( $elem.width(), 1, "'+=-9px' on width (params)" );
|
||||
|
||||
$elem.css({ paddingLeft: "+=4" });
|
||||
equals( $elem.css("paddingLeft"), "5px", "'+=4' on paddingLeft (hash)" );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user