From: Michał Gołębiowski Date: Sun, 9 Mar 2014 23:59:14 +0000 (+0100) Subject: Css: Revert 24e587929f62428e1959b10aace6dc4fd65ab397 X-Git-Tag: 1.11.1-beta1~33 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4a6d1631eaae2c5b89dfe58728b46a8997daba48;p=jquery.git Css: Revert 24e587929f62428e1959b10aace6dc4fd65ab397 The workaround to be able to change !important styles broke the browser keeping the old CSS value if the new one was rejected. Patching it would involve a significant perf hit (~33%) so the initial patch needs to be reverted instead. Tests by m_gol & gibson042. (cherry-picked from 10e654218a65ec9a0ffc875137cea945389c69f1) Fixes #14836 Closes gh-1532 --- diff --git a/src/css.js b/src/css.js index 4b1f91440..afebceb12 100644 --- a/src/css.js +++ b/src/css.js @@ -295,9 +295,6 @@ jQuery.extend({ // Support: IE // Swallow errors from 'invalid' CSS values (#5509) try { - // Support: Chrome, Safari - // Setting style to blank string required to delete "style: x !important;" - style[ name ] = ""; style[ name ] = value; } catch(e) {} } diff --git a/test/unit/css.js b/test/unit/css.js index e084ebf60..33d38d4b1 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -207,7 +207,7 @@ test( "css() explicit and relative values", 29, function() { }); test("css(String, Object)", function() { - expect( 19 ); + expect( 20 ); var j, div, display, ret, success; jQuery("#nothiddendiv").css("top", "-1em"); @@ -242,15 +242,18 @@ test("css(String, Object)", function() { equal( ret, div, "Make sure setting undefined returns the original set." ); equal( div.css("display"), display, "Make sure that the display wasn't changed." ); - // Test for Bug #5509 success = true; try { - jQuery("#foo").css("backgroundColor", "rgba(0, 0, 0, 0.1)"); + jQuery( "#foo" ).css( "backgroundColor", "rgba(0, 0, 0, 0.1)" ); } catch (e) { success = false; } - ok( success, "Setting RGBA values does not throw Error" ); + ok( success, "Setting RGBA values does not throw Error (#5509)" ); + + jQuery( "#foo" ).css( "font", "7px/21px sans-serif" ); + strictEqual( jQuery( "#foo" ).css( "line-height" ), "21px", + "Set font shorthand property (#14759)" ); }); test( "css(Array)", function() { @@ -981,10 +984,20 @@ test( ":visible/:hidden selectors", function() { t( "Is Hidden", "#form input:hidden", ["hidden1","hidden2"] ); }); -test( "Override !important when changing styles (#14394)", function() { +test( "Keep the last style if the new one isn't recognized by the browser (#14836)", function() { + expect( 2 ); + + var el; + el = jQuery( "
" ).css( "color", "black" ).css( "color", "fake value" ); + equal( el.css( "color" ), "black", "The old style is kept when setting an unrecognized value" ); + el = jQuery( "
" ).css( "color", "black" ).css( "color", " " ); + equal( el.css( "color" ), "black", "The old style is kept when setting to a space" ); +}); + +test( "Reset the style if set to an empty string", function() { expect( 1 ); - var el = jQuery( "
" ).css( "display", "none" ); - equal( el.css( "display" ), "none", "New style replaced !important" ); + var el = jQuery( "
" ).css( "color", "black" ).css( "color", "" ); + equal( el.css( "color" ), "", "The style can be reset by setting to an empty string" ); }); asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Element's Style (#8908)", 24, function() {