diff options
author | John Resig <jeresig@gmail.com> | 2007-03-16 20:37:10 +0000 |
---|---|---|
committer | John Resig <jeresig@gmail.com> | 2007-03-16 20:37:10 +0000 |
commit | 83b43a1e927d6b260f35f75bc2c3d177f271be93 (patch) | |
tree | d15be34a7886e09907002174e678e9b714125afa | |
parent | ab2d10c6d62c4d2b834337e238cf2a618eec4412 (diff) | |
download | jquery-83b43a1e927d6b260f35f75bc2c3d177f271be93.tar.gz jquery-83b43a1e927d6b260f35f75bc2c3d177f271be93.zip |
Forced the test suite into standards mode. Fixed some issues with how opacity was handled in IE. Fixed a number of IE fx bugs.
-rw-r--r-- | build/test/fx.html | 11 | ||||
-rw-r--r-- | src/fx/fx.js | 6 | ||||
-rw-r--r-- | src/jquery/jquery.js | 30 |
3 files changed, 25 insertions, 22 deletions
diff --git a/build/test/fx.html b/build/test/fx.html index bdbcbf2c3..050513a40 100644 --- a/build/test/fx.html +++ b/build/test/fx.html @@ -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); diff --git a/src/fx/fx.js b/src/fx/fx.js index f67747fd0..163f0f65c 100644 --- a/src/fx/fx.js +++ b/src/fx/fx.js @@ -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; diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index 061d86c89..0c00829f6 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -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] ) { |