fix for #4216. css now ignores negative numbers for width and height when passed...
authorBrandon Aaron <brandon.aaron@gmail.com>
Wed, 22 Apr 2009 05:23:53 +0000 (05:23 +0000)
committerBrandon Aaron <brandon.aaron@gmail.com>
Wed, 22 Apr 2009 05:23:53 +0000 (05:23 +0000)
src/css.js
test/unit/css.js

index b8a1350..f77497b 100644 (file)
@@ -8,10 +8,6 @@ var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
 jQuery.fn.css = function( name, value ) {
        var options = name, isFunction = jQuery.isFunction( value );
 
-       // ignore negative width and height values
-       if ( (name == 'width' || name == 'height') && parseFloat(value) < 0 )
-               value = undefined;
-
        if ( typeof name === "string" ) {
                // Are we setting the style?
                if ( value === undefined ) {
@@ -55,6 +51,10 @@ jQuery.extend({
                if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
                        return undefined;
 
+               // ignore negative width and height values #1599
+               if ( (name == 'width' || name == 'height') && parseFloat(value) < 0 )
+                       value = undefined;
+
                var style = elem.style || elem, set = value !== undefined;
 
                // IE uses filters for opacity
index af1983c..a70b115 100644 (file)
@@ -1,7 +1,7 @@
 module("css");
 
 test("css(String|Hash)", function() {
-       expect(19);
+       expect(21);
 
        equals( jQuery('#main').css("display"), 'none', 'Check for css property "display"');
 
@@ -11,6 +11,12 @@ test("css(String|Hash)", function() {
        jQuery('#nothiddendiv').css({display: 'block'});
        ok( jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is visible');
 
+       // handle negative numbers by ignoring #1599, #4216
+       var width = parseFloat(jQuery('#nothiddendiv').css('width')), height = parseFloat(jQuery('#nothiddendiv').css('height'));
+       jQuery('#nothiddendiv').css({ width: -1, height: -1 });
+       equals( parseFloat(jQuery('#nothiddendiv').css('width')), width, 'Test negative width ignored')
+       equals( parseFloat(jQuery('#nothiddendiv').css('height')), height, 'Test negative height ignored')
+
        jQuery('#floatTest').css({styleFloat: 'right'});
        equals( jQuery('#floatTest').css('styleFloat'), 'right', 'Modified CSS float using "styleFloat": Assert float is right');
        jQuery('#floatTest').css({cssFloat: 'left'});