From 2ae872c594790c4b935a1d7eabdf8b8212fd3c3f Mon Sep 17 00:00:00 2001 From: jeresig Date: Sat, 9 Oct 2010 10:52:53 -0400 Subject: [PATCH] Make sure null/NaN values aren't set in .css(). Fixes #7116. --- src/css.js | 7 ++++++- test/unit/css.js | 22 +++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/css.js b/src/css.js index 99cb735..caf4985 100644 --- a/src/css.js +++ b/src/css.js @@ -70,7 +70,7 @@ jQuery.extend({ style: function( elem, name, value, extra ) { // Don't set styles on text and comment nodes if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return undefined; + return; } // Make sure that we're working with the right name @@ -81,6 +81,11 @@ jQuery.extend({ // Check if we're setting a value if ( value !== undefined ) { + // Make sure that NaN and null values aren't set. See: #7116 + if ( typeof value === "number" && isNaN( value ) || value == null ) { + return; + } + // If a number was passed in, add 'px' to the (except for certain CSS properties) if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) { value += "px"; diff --git a/test/unit/css.js b/test/unit/css.js index 26dd704..3131af3 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -1,7 +1,7 @@ module("css"); test("css(String|Hash)", function() { - expect(29); + expect(33); equals( jQuery('#main').css("display"), 'none', 'Check for css property "display"'); @@ -61,6 +61,26 @@ test("css(String|Hash)", function() { equals( prctval, checkval, "Verify fontSize % set." ); equals( typeof child.css("width"), "string", "Make sure that a string width is returned from css('width')." ); + + var old = child[0].style.height; + + // Test NaN + child.css("height", parseFloat("zoo")); + equals( child[0].style.height, old, "Make sure height isn't changed on NaN." ); + + // Test null + child.css("height", null); + equals( child[0].style.height, old, "Make sure height isn't changed on null." ); + + old = child[0].style.fontSize; + + // Test NaN + child.css("font-size", parseFloat("zoo")); + equals( child[0].style.fontSize, old, "Make sure font-size isn't changed on NaN." ); + + // Test null + child.css("font-size", null); + equals( child[0].style.fontSize, old, "Make sure font-size isn't changed on null." ); }); test("css(String, Object)", function() { -- 1.7.10.4