aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/css.js4
-rw-r--r--src/support.js4
-rw-r--r--test/unit/css.js7
-rw-r--r--test/unit/support.js29
4 files changed, 30 insertions, 14 deletions
diff --git a/src/css.js b/src/css.js
index 210bed2e8..7ddce0a04 100644
--- a/src/css.js
+++ b/src/css.js
@@ -213,8 +213,8 @@ 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
diff --git a/src/support.js b/src/support.js
index c99bb3922..4960930ef 100644
--- a/src/support.js
+++ b/src/support.js
@@ -138,6 +138,10 @@ jQuery.support = (function() {
support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].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 e7ada8bf9..d8f7c01d4 100644
--- a/test/unit/css.js
+++ b/test/unit/css.js
@@ -923,7 +923,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",
@@ -961,7 +961,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 ],
@@ -972,6 +972,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 );
+ ok( true );
return true;
}
@@ -985,6 +986,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 ) +
diff --git a/test/unit/support.js b/test/unit/support.js
index 76a0af7b7..356751d22 100644
--- a/test/unit/support.js
+++ b/test/unit/support.js
@@ -81,7 +81,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
- "doesNotIncludeMarginInBodyOffset":true
+ "doesNotIncludeMarginInBodyOffset":true,
+ "clearCloneStyle": true
};
} else if ( /opera.*version\/12\.1/i.test( userAgent ) ) {
expected = {
@@ -114,7 +115,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
- "doesNotIncludeMarginInBodyOffset":true
+ "doesNotIncludeMarginInBodyOffset":true,
+ "clearCloneStyle": true
};
} else if ( /msie 10\.0/i.test( userAgent ) ) {
expected = {
@@ -147,7 +149,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
- "doesNotIncludeMarginInBodyOffset":true
+ "doesNotIncludeMarginInBodyOffset":true,
+ "clearCloneStyle": false
};
} else if ( /msie 9\.0/i.test( userAgent ) ) {
expected = {
@@ -180,7 +183,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":false,
- "doesNotIncludeMarginInBodyOffset":true
+ "doesNotIncludeMarginInBodyOffset":true,
+ "clearCloneStyle": false
};
} else if ( /msie 8\.0/i.test( userAgent ) ) {
expected = {
@@ -213,7 +217,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":false,
"ajax":true,
"cors":false,
- "doesNotIncludeMarginInBodyOffset":true
+ "doesNotIncludeMarginInBodyOffset":true,
+ "clearCloneStyle": true
};
} else if ( /msie 7\.0/i.test( userAgent ) ) {
expected = {
@@ -246,7 +251,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"shrinkWrapBlocks": false,
"submitBubbles": false,
"tbody": false,
- "style": false
+ "style": false,
+ "clearCloneStyle": true
};
} else if ( /msie 6\.0/i.test( userAgent ) ) {
expected = {
@@ -279,7 +285,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":false,
"ajax":true,
"cors":false,
- "doesNotIncludeMarginInBodyOffset":true
+ "doesNotIncludeMarginInBodyOffset":true,
+ "clearCloneStyle": true
};
} else if ( /5\.1\.1 safari/i.test( userAgent ) ) {
expected = {
@@ -312,7 +319,8 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
- "doesNotIncludeMarginInBodyOffset":true
+ "doesNotIncludeMarginInBodyOffset":true,
+ "clearCloneStyle": true
};
} else if ( /firefox/i.test( userAgent ) ) {
expected = {
@@ -345,13 +353,14 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo
"reliableHiddenOffsets":true,
"ajax":true,
"cors":true,
- "doesNotIncludeMarginInBodyOffset":true
+ "doesNotIncludeMarginInBodyOffset":true,
+ "clearCloneStyle": true
};
}
if ( expected ) {
test("Verify that the support tests resolve as expected per browser", function() {
- expect( 30 );
+ expect( 31 );
for ( var i in expected ) {
if ( jQuery.ajax || i !== "ajax" && i !== "cors" ) {