aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Gołębiowski <m.goleb@gmail.com>2014-03-10 00:59:14 +0100
committerMichał Gołębiowski <m.goleb@gmail.com>2014-03-10 19:20:54 +0100
commit4a6d1631eaae2c5b89dfe58728b46a8997daba48 (patch)
tree19086e3a3e9d79f0c8adc45d81abcb08a03390ae
parent10e654218a65ec9a0ffc875137cea945389c69f1 (diff)
downloadjquery-4a6d1631eaae2c5b89dfe58728b46a8997daba48.tar.gz
jquery-4a6d1631eaae2c5b89dfe58728b46a8997daba48.zip
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
-rw-r--r--src/css.js3
-rw-r--r--test/unit/css.js27
2 files changed, 20 insertions, 10 deletions
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( "<div></div>" ).css( "color", "black" ).css( "color", "fake value" );
+ equal( el.css( "color" ), "black", "The old style is kept when setting an unrecognized value" );
+ el = jQuery( "<div></div>" ).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( "<div style='display: block !important;'></div>" ).css( "display", "none" );
- equal( el.css( "display" ), "none", "New style replaced !important" );
+ var el = jQuery( "<div></div>" ).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() {