Make setting .css(name, undefined) a no-op. Fixes #4388.

This commit is contained in:
John Resig 2010-09-28 08:53:09 -07:00
parent 879799fe95
commit 558d96b42a
2 changed files with 14 additions and 1 deletions

View File

@ -20,6 +20,11 @@ var ralpha = /alpha\([^)]*\)/,
}; };
jQuery.fn.css = function( name, value ) { 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 jQuery.access( this, name, value, true, function( elem, name, value ) {
return value !== undefined ? return value !== undefined ?
jQuery.style( elem, name, value ) : jQuery.style( elem, name, value ) :

View File

@ -64,7 +64,8 @@ test("css(String|Hash)", function() {
}); });
test("css(String, Object)", function() { test("css(String, Object)", function() {
expect(19); expect(21);
ok( jQuery('#nothiddendiv').is(':visible'), 'Modifying CSS display: Assert element is visible'); ok( jQuery('#nothiddendiv').is(':visible'), 'Modifying CSS display: Assert element is visible');
jQuery('#nothiddendiv').css("display", 'none'); jQuery('#nothiddendiv').css("display", 'none');
ok( !jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is hidden'); 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 // opera sometimes doesn't update 'display' correctly, see #2037
jQuery("#t2037")[0].innerHTML = jQuery("#t2037")[0].innerHTML jQuery("#t2037")[0].innerHTML = jQuery("#t2037")[0].innerHTML
equals( jQuery("#t2037 .hidden").css("display"), "none", "Make sure browser thinks it is hidden" ); 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) { if(jQuery.browser.msie) {