* @desc Creates a div element (and all of its contents) dynamically, \r
* and appends it to the element with the ID of body. Internally, an\r
* element is created and it's innerHTML property set to the given markup.\r
- * It is therefore both quite flexible and limited.
+ * It is therefore both quite flexible and limited. \r
*\r
* @name $\r
* @param String expr An expression to search with, or a string of HTML to create on the fly.\r
});\r
\r
return p == "height" ? oHeight : oWidth;\r
- } else if ( p == "opacity" && jQuery.browser.msie )\r
- return parseFloat( jQuery.curCSS(e,"filter").replace(/[^0-9.]/,"") ) || 1;\r
+ }\r
\r
return jQuery.curCSS( e, p );\r
},\r
\r
curCSS: function(elem, prop, force) {\r
var ret;\r
+ \r
+ if (prop == 'opacity' && jQuery.browser.msie)\r
+ return jQuery.attr(elem.style, 'opacity');\r
\r
if (!force && elem.style[prop]) {\r
\r
disabled: "disabled",\r
checked: "checked"\r
};\r
+ \r
+ // IE actually uses filters for opacity ... elem is actually elem.style\r
+ if (name == "opacity" && jQuery.browser.msie && value != undefined) {\r
+ // IE has trouble with opacity if it does not have layout\r
+ // Would prefer to check element.hasLayout first but don't have access to the element here\r
+ elem['zoom'] = 1; \r
+ if (value == 1) // Remove filter to avoid more IE weirdness\r
+ return elem["filter"] = elem["filter"].replace(/alpha\([^\)]*\)/gi,"");\r
+ else\r
+ return elem["filter"] = elem["filter"].replace(/alpha\([^\)]*\)/gi,"") + "alpha(opacity=" + value * 100 + ")";\r
+ } else if (name == "opacity" && jQuery.browser.msie) {\r
+ return elem["filter"] ? parseFloat( elem["filter"].match(/alpha\(opacity=(.*)\)/)[1] )/100 : 1;\r
+ }\r
+ \r
+ // Mozilla doesn't play well with opacity 1\r
+ if (name == "opacity" && jQuery.browser.mozilla && value == 1) value = 0.9999;\r
\r
if ( fix[name] ) {\r
if ( value != undefined ) elem[fix[name]] = value;\r