From 6a049246a123d7da75430f875e9eee1ba3270722 Mon Sep 17 00:00:00 2001 From: Brandon Aaron Date: Wed, 22 Apr 2009 05:23:53 +0000 Subject: [PATCH] fix for #4216. css now ignores negative numbers for width and height when passed an object of props and vals. --- src/css.js | 8 ++++---- test/unit/css.js | 8 +++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/css.js b/src/css.js index b8a135005..f77497b4f 100644 --- a/src/css.js +++ b/src/css.js @@ -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 diff --git a/test/unit/css.js b/test/unit/css.js index af1983cc1..a70b11534 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -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'});