Forced the test suite into standards mode. Fixed some issues with how opacity was...
authorJohn Resig <jeresig@gmail.com>
Fri, 16 Mar 2007 20:37:10 +0000 (20:37 +0000)
committerJohn Resig <jeresig@gmail.com>
Fri, 16 Mar 2007 20:37:10 +0000 (20:37 +0000)
build/test/fx.html
src/fx/fx.js
src/jquery/jquery.js

index bdbcbf2..050513a 100644 (file)
@@ -1,7 +1,9 @@
-<html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
 <head>
-<title>Animation Test Suite</title>
-<script src="../dist/jquery.js"></script>
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <title>Animation Test Suite</title>
+       <script src="../dist/jquery.js"></script>
 <style>
 div#tests h4 {
        background: red;
@@ -232,8 +234,9 @@ $(document).ready(function(){
                                var cur_o = jQuery.attr(this.style, "opacity");
                                if ( cur_o !== "" ) cur_o = parseFloat( cur_o );
 
-                               if ( (t_o == "hide"||t_o == "show") && cur_o != f_o )
+                               if ( (t_o == "hide"||t_o == "show") && cur_o != f_o ) {
                                        return msg(this, "Opacity not reset to " + f_o + ": " + cur_o);
+                               }
 
                                if ( t_w == "hide" && this.style.display != "none" )
                                        return msg(this, "Hiding, display not none: " + this.style.display);
index f67747f..163f0f6 100644 (file)
@@ -462,7 +462,7 @@ jQuery.extend({
                        if ( !elem.orig ) elem.orig = {};
 
                        // Remember where we started, so that we can go back to it later
-                       elem.orig[prop] = elem.style[prop];
+                       elem.orig[prop] = jQuery.attr( elem.style, prop );
 
                        options.show = true;
 
@@ -479,7 +479,7 @@ jQuery.extend({
                        if ( !elem.orig ) elem.orig = {};
 
                        // Remember where we started, so that we can go back to it later
-                       elem.orig[prop] = elem.style[prop];
+                       elem.orig[prop] = jQuery.attr( elem.style, prop );
 
                        options.hide = true;
 
@@ -492,7 +492,7 @@ jQuery.extend({
                        if ( !elem.orig ) elem.orig = {};
 
                        // Remember where we started, so that we can go back to it later
-                       elem.orig[prop] = this.style[prop];
+                       elem.orig[prop] = jQuery.attr( elem.style, prop );
 
                        if(oldDisplay == "none")  {
                                options.show = true;
index 061d86c..0c00829 100644 (file)
@@ -1402,12 +1402,12 @@ jQuery.extend({
 
        curCSS: function(elem, prop, force) {
                var ret;
-               
+
                if (prop == "opacity" && jQuery.browser.msie)
                        return jQuery.attr(elem.style, "opacity");
-                       
+               
                if (prop == "float" || prop == "cssFloat")
-                   prop = jQuery.browser.msie ? "styleFloat" : "cssFloat";
+                       prop = jQuery.browser.msie ? "styleFloat" : "cssFloat";
 
                if (!force && elem.style[prop])
                        ret = elem.style[prop];
@@ -1431,10 +1431,8 @@ jQuery.extend({
                                });
 
                } else if (elem.currentStyle) {
-
                        var newProp = prop.replace(/\-(\w)/g,function(m,c){return c.toUpperCase();});
                        ret = elem.currentStyle[prop] || elem.currentStyle[newProp];
-                       
                }
 
                return ret;
@@ -1527,18 +1525,20 @@ jQuery.extend({
                };
                
                // IE actually uses filters for opacity ... elem is actually elem.style
-               if ( name == "opacity" && jQuery.browser.msie && value != undefined ) {
-                       // IE has trouble with opacity if it does not have layout
-                       // Force it by setting the zoom level
-                       elem.zoom = 1; 
-
-                       // Set the alpha filter to set the opacity
-                       return elem.filter = elem.filter.replace(/alpha\([^\)]*\)/gi,"") +
-                               ( value == 1 ? "" : "alpha(opacity=" + value * 100 + ")" );
+               if ( name == "opacity" && jQuery.browser.msie ) {
+                       if ( value != undefined ) {
+                               // IE has trouble with opacity if it does not have layout
+                               // Force it by setting the zoom level
+                               elem.zoom = 1; 
+
+                               // Set the alpha filter to set the opacity
+                               elem.filter = (elem.filter || "").replace(/alpha\([^)]*\)/,"") +
+                                       (parseFloat(value).toString() == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
+                       }
 
-               } else if ( name == "opacity" && jQuery.browser.msie )
                        return elem.filter ? 
-                               parseFloat( elem.filter.match(/alpha\(opacity=(.*)\)/)[1] ) / 100 : 1;
+                               (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100).toString() : "";
+               }
                
                // Certain attributes only work when accessed via the old DOM 0 way
                if ( fix[name] ) {