opacity is now retrieved from stylesheet in IE. fixes #3981
authorBrandon Aaron <brandon.aaron@gmail.com>
Thu, 14 May 2009 14:44:31 +0000 (14:44 +0000)
committerBrandon Aaron <brandon.aaron@gmail.com>
Thu, 14 May 2009 14:44:31 +0000 (14:44 +0000)
src/css.js
test/index.html
test/unit/css.js

index f77497b..12f9d51 100644 (file)
@@ -120,12 +120,18 @@ jQuery.extend({
        },
 
        curCSS: function( elem, name, force ) {
-               var ret, style = elem.style;
+               var ret, style = elem.style, filter;
 
                // IE uses filters for opacity
                if ( !jQuery.support.opacity && name == "opacity" ) {
-                       ret = style.filter && style.filter.indexOf("opacity=") >= 0 ?
-                               (parseFloat( style.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
+                       filter = (filter = style.filter) && filter.indexOf("opacity=") >= 0 ?
+                               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 === "" ?
index 634dacb..dfd46fb 100644 (file)
@@ -4,6 +4,9 @@
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>jQuery Test Suite</title>
        <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 -->
        <script type="text/javascript">
                var jQuery = this.jQuery || "jQuery", // For testing .noConflict()
index a70b115..a917173 100644 (file)
@@ -1,7 +1,7 @@
 module("css");
 
 test("css(String|Hash)", function() {
-       expect(21);
+       expect(23);
 
        equals( jQuery('#main').css("display"), 'none', 'Check for css property "display"');
 
@@ -34,6 +34,10 @@ test("css(String|Hash)", function() {
        });
        jQuery('#foo').css({opacity: ''});
        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() {