aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/css.js11
-rw-r--r--src/support.js4
-rw-r--r--test/unit/css.js7
3 files changed, 12 insertions, 10 deletions
diff --git a/src/css.js b/src/css.js
index 6b800d6d3..2a7172759 100644
--- a/src/css.js
+++ b/src/css.js
@@ -216,18 +216,13 @@ jQuery.extend({
// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
// but it would mean to define eight (for every problematic property) identical functions
- if ( value === "" && name.indexOf("background") === 0 ) {
- value = " ";
+ if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
+ style[ name ] = "inherit";
}
// If a hook was provided, use that value, otherwise just set the specified value
if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-
- // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
- // Fixes bug #5509
- try {
- style[ name ] = value;
- } catch(e) {}
+ style[ name ] = value;
}
} else {
diff --git a/src/support.js b/src/support.js
index f1de07d45..9950b33d4 100644
--- a/src/support.js
+++ b/src/support.js
@@ -64,6 +64,10 @@ jQuery.support = (function() {
div.setAttribute( "onfocusin", "t" );
support.focusinBubbles = "onfocusin" in window || div.attributes.onfocusin.expando === false;
+ div.style.backgroundClip = "content-box";
+ div.cloneNode().style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
// Run tests that need a body at doc ready
jQuery(function() {
var container, marginDiv, tds,
diff --git a/test/unit/css.js b/test/unit/css.js
index abc625933..8513913ee 100644
--- a/test/unit/css.js
+++ b/test/unit/css.js
@@ -883,7 +883,7 @@ test( "css opacity consistency across browsers (#12685)", function() {
equal( Math.round( el.css("opacity") * 100 ), 20, "remove opacity override" );
});
-asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Element's Style (#8908)", 16, function() {
+asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Element's Style (#8908)", 24, function() {
var baseUrl = document.location.href.replace( /([^\/]*)$/, "" ),
styles = [{
name: "backgroundAttachment",
@@ -921,7 +921,7 @@ asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Eleme
expected: [ "auto auto" ]
}];
- jQuery.each( styles, function(index, style) {
+ jQuery.each(styles, function( index, style ) {
var $clone, $clonedChildren,
$source = jQuery( "#firstp" ),
source = $source[ 0 ],
@@ -932,6 +932,7 @@ asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Eleme
if ( source.style[ style.name ] === undefined ) {
ok( true, style.name + ": style isn't supported and therefore not an issue" );
ok( true );
+
return true;
}
@@ -945,6 +946,8 @@ asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Eleme
$clonedChildren.css( style.name, "" );
window.setTimeout(function() {
+ notEqual( $clone.css( style.name ), style.value[ 0 ], "Cloned css was changed" );
+
ok( jQuery.inArray( $source.css( style.name ) !== -1, style.value ),
"Clearing clone.css() doesn't affect source.css(): " + style.name +
"; result: " + $source.css( style.name ) +