From 558d96b42aab634e26a66ff337a03ae89be5b33b Mon Sep 17 00:00:00 2001 From: John Resig Date: Tue, 28 Sep 2010 08:53:09 -0700 Subject: [PATCH 1/1] Make setting .css(name, undefined) a no-op. Fixes #4388. --- src/css.js | 5 +++++ test/unit/css.js | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/css.js b/src/css.js index 07ff686..61cdc48 100644 --- a/src/css.js +++ b/src/css.js @@ -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 ) : diff --git a/test/unit/css.js b/test/unit/css.js index 0e91ae1..24aba79 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -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) { -- 1.7.10.4