opacity is now retrieved from stylesheet in IE. fixes #3981

This commit is contained in:
Brandon Aaron 2009-05-14 14:44:31 +00:00
parent b763cc6602
commit ec3ebd3e8a
3 changed files with 17 additions and 4 deletions

View File

@ -120,12 +120,18 @@ jQuery.extend({
}, },
curCSS: function( elem, name, force ) { curCSS: function( elem, name, force ) {
var ret, style = elem.style; var ret, style = elem.style, filter;
// IE uses filters for opacity // IE uses filters for opacity
if ( !jQuery.support.opacity && name == "opacity" ) { if ( !jQuery.support.opacity && name == "opacity" ) {
ret = style.filter && style.filter.indexOf("opacity=") >= 0 ? filter = (filter = style.filter) && filter.indexOf("opacity=") >= 0 ?
(parseFloat( style.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '': filter :
(filter = elem.currentStyle[ 'filter' ]) && filter.indexOf("opacity=") >= 0 ?
filter :
null;
ret = filter && filter.indexOf("opacity=") >= 0 ?
(parseFloat( filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
""; "";
return ret === "" ? return ret === "" ?

View File

@ -4,6 +4,9 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Test Suite</title> <title>jQuery Test Suite</title>
<link rel="Stylesheet" media="screen" href="qunit/testsuite.css" /> <link rel="Stylesheet" media="screen" href="qunit/testsuite.css" />
<style type="text/css" media="screen">
ol#empty { opacity: 0; filter:Alpha(opacity=0); } /* for testing opacity set in styles in IE */
</style>
<!-- Includes --> <!-- Includes -->
<script type="text/javascript"> <script type="text/javascript">
var jQuery = this.jQuery || "jQuery", // For testing .noConflict() var jQuery = this.jQuery || "jQuery", // For testing .noConflict()

View File

@ -1,7 +1,7 @@
module("css"); module("css");
test("css(String|Hash)", function() { test("css(String|Hash)", function() {
expect(21); expect(23);
equals( jQuery('#main').css("display"), 'none', 'Check for css property "display"'); equals( jQuery('#main').css("display"), 'none', 'Check for css property "display"');
@ -34,6 +34,10 @@ test("css(String|Hash)", function() {
}); });
jQuery('#foo').css({opacity: ''}); jQuery('#foo').css({opacity: ''});
equals( jQuery('#foo').css('opacity'), '1', "Assert opacity is 1 when set to an empty String" ); equals( jQuery('#foo').css('opacity'), '1', "Assert opacity is 1 when set to an empty String" );
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" );
}); });
test("css(String, Object)", function() { test("css(String, Object)", function() {