From 558d96b42aab634e26a66ff337a03ae89be5b33b Mon Sep 17 00:00:00 2001
From: John Resig <jeresig@gmail.com>
Date: Tue, 28 Sep 2010 08:53:09 -0700
Subject: [PATCH] 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