IE has an implementation detail known as "hasLayout", which, unfortunately, often leaks out for an abstraction of the API and must be tackled ... This is the battle you are facing today: inline elements will usually not have a "layout" and therefore will not work with "filters" ... which are used by jQuery to simulate the opacity of IE.
This is not new in IE8, and as a rule, you donβt have to worry about it at all, as this is exactly the browser-specific madness that jQuery is designed to work ... Indeed, m without bothering with the details that actually means "hasLayout" and "filters" - you probably don't care and don't need (but if you're interested, google it ...)
The problem is that jQuery uses under the hood to force the layout (so the filters work (so it can mimic opacity (since IE doesn't implement it))) ... it doesn't work on IE8. Isn't that just great, huh? They fixed a bug in which display: inline elements behaved like display: inline-block elements, but did not implement the function by which people used their error to hack into support ...
Well, nothing, you can do it. Giving an unpleasant email to the IE team may make you feel a little better, but they are working hard on IE9, which should (knock on the tree ...) fix most of these problems. In the meantime, you just need to do manually what IE used (kinda, sorta and, most importantly, wrong): force the inline element into the inline block mode:
$("myInlineElement").css({display: 'inline-block'}).faceOut();
... or better yet, put it in the IE8 style sheet only ...
Shog9
source share