Make sure null/NaN values aren't set in .css(). Fixes #7116.
authorjeresig <jeresig@gmail.com>
Sat, 9 Oct 2010 14:52:53 +0000 (10:52 -0400)
committerjeresig <jeresig@gmail.com>
Sat, 9 Oct 2010 14:52:53 +0000 (10:52 -0400)
src/css.js
test/unit/css.js

index 99cb735..caf4985 100644 (file)
@@ -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";
index 26dd704..3131af3 100644 (file)
@@ -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() {