Make setting .css(name, undefined) a no-op. Fixes #4388.
authorJohn Resig <jeresig@gmail.com>
Tue, 28 Sep 2010 15:53:09 +0000 (08:53 -0700)
committerJohn Resig <jeresig@gmail.com>
Tue, 28 Sep 2010 15:53:09 +0000 (08:53 -0700)
src/css.js
test/unit/css.js

index 07ff686..61cdc48 100644 (file)
@@ -20,6 +20,11 @@ var ralpha = /alpha\([^)]*\)/,
        };
 
 jQuery.fn.css = function( name, value ) {
+       // Setting 'undefined' is a no-op
+       if ( arguments.length === 2 && value === undefined ) {
+               return this;
+       }
+
        return jQuery.access( this, name, value, true, function( elem, name, value ) {
                return value !== undefined ?
                        jQuery.style( elem, name, value ) :
index 0e91ae1..24aba79 100644 (file)
@@ -64,7 +64,8 @@ test("css(String|Hash)", function() {
 });
 
 test("css(String, Object)", function() {
-       expect(19);
+       expect(21);
+
        ok( jQuery('#nothiddendiv').is(':visible'), 'Modifying CSS display: Assert element is visible');
        jQuery('#nothiddendiv').css("display", 'none');
        ok( !jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is hidden');
@@ -96,6 +97,13 @@ test("css(String, Object)", function() {
        // opera sometimes doesn't update 'display' correctly, see #2037
        jQuery("#t2037")[0].innerHTML = jQuery("#t2037")[0].innerHTML
        equals( jQuery("#t2037 .hidden").css("display"), "none", "Make sure browser thinks it is hidden" );
+
+       var div = jQuery("#nothiddendiv"),
+               display = div.css("display"),
+               ret = div.css("display", undefined);
+
+       equals( ret, div, "Make sure setting undefined returns the original set." );
+       equals( div.css("display"), display, "Make sure that the display wasn't changed." );
 });
 
 if(jQuery.browser.msie) {