Forced the test suite into standards mode. Fixed some issues with how opacity was handled in IE. Fixed a number of IE fx bugs.

This commit is contained in:
John Resig 2007-03-16 20:37:10 +00:00
parent ab2d10c6d6
commit 83b43a1e92
3 changed files with 24 additions and 21 deletions

View 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;

28
src/jquery/jquery.js vendored
View 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;
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
return elem.filter = elem.filter.replace(/alpha\([^\)]*\)/gi,"") +
( value == 1 ? "" : "alpha(opacity=" + value * 100 + ")" );
// 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] ) {