diff --git a/src/css.js b/src/css.js index 4bf818e5..99cb7358 100644 --- a/src/css.js +++ b/src/css.js @@ -88,7 +88,11 @@ jQuery.extend({ // If a hook was provided, use that value, otherwise just set the specified value if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) { - style[ name ] = value; + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} } } else { diff --git a/test/unit/css.js b/test/unit/css.js index 468f7638..26dd7047 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -64,7 +64,7 @@ test("css(String|Hash)", function() { }); test("css(String, Object)", function() { - expect(21); + expect(22); ok( jQuery('#nothiddendiv').is(':visible'), 'Modifying CSS display: Assert element is visible'); jQuery('#nothiddendiv').css("display", 'none'); @@ -104,6 +104,16 @@ test("css(String, Object)", function() { equals( ret, div, "Make sure setting undefined returns the original set." ); equals( div.css("display"), display, "Make sure that the display wasn't changed." ); + + // Test for Bug #5509 + var success = true; + try { + jQuery('#foo').css("backgroundColor", "rgba(0, 0, 0, 0.1)"); + } + catch (e) { + success = false; + } + ok( success, "Setting RGBA values does not throw Error" ); }); if(jQuery.browser.msie) {