aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/css.js7
-rw-r--r--test/data/testsuite.css2
-rw-r--r--test/unit/css.js5
3 files changed, 9 insertions, 5 deletions
diff --git a/src/css.js b/src/css.js
index 65ec20f57..f764f321f 100644
--- a/src/css.js
+++ b/src/css.js
@@ -231,7 +231,8 @@ if ( !jQuery.support.opacity ) {
},
set: function( elem, value ) {
- var style = elem.style;
+ var style = elem.style,
+ currentStyle = elem.currentStyle;
// IE has trouble with opacity if it does not have layout
// Force it by setting the zoom level
@@ -241,11 +242,11 @@ if ( !jQuery.support.opacity ) {
var opacity = jQuery.isNaN(value) ?
"" :
"alpha(opacity=" + value * 100 + ")",
- filter = style.filter || "";
+ filter = currentStyle && currentStyle.filter || style.filter || "";
style.filter = ralpha.test(filter) ?
filter.replace(ralpha, opacity) :
- style.filter + ' ' + opacity;
+ filter + " " + opacity;
}
};
}
diff --git a/test/data/testsuite.css b/test/data/testsuite.css
index 7df76834a..d029b8716 100644
--- a/test/data/testsuite.css
+++ b/test/data/testsuite.css
@@ -1,5 +1,5 @@
/* for testing opacity set in styles in IE */
-ol#empty { opacity: 0; filter:Alpha(opacity=0); }
+ol#empty { opacity: 0; filter:Alpha(opacity=0) progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffff0000', EndColorStr='#ffffffff'); }
div#fx-tests h4 {
background: red;
diff --git a/test/unit/css.js b/test/unit/css.js
index 4578b1976..621728cd6 100644
--- a/test/unit/css.js
+++ b/test/unit/css.js
@@ -1,7 +1,7 @@
module("css", { teardown: moduleTeardown });
test("css(String|Hash)", function() {
- expect(41);
+ expect( 42 );
equals( jQuery('#main').css("display"), 'block', 'Check for css property "display"');
@@ -58,6 +58,9 @@ test("css(String|Hash)", function() {
equals( jQuery('#empty').css('opacity'), '0', "Assert opacity is accessible via filter property set in stylesheet in IE" );
jQuery('#empty').css({ opacity: '1' });
equals( jQuery('#empty').css('opacity'), '1', "Assert opacity is taken from style attribute when set vs stylesheet in IE with filters" );
+ jQuery.support.opacity ?
+ ok(true, "Requires the same number of tests"):
+ ok( ~jQuery("#empty")[0].currentStyle.filter.indexOf("gradient"), "Assert setting opacity doesn't overwrite other filters of the stylesheet in IE" );
var div = jQuery('#nothiddendiv'), child = jQuery('#nothiddendivchild');