jQuery的fadeIn()和fadeOut()不适用于IE 8吗?

时间:2010-06-24 23:00:11

标签: jquery effects internet-explorer-8

我有一个fadeIn和fadeOut内联元素的页面,jQuery不起作用。然后,当我将开发人员工具更改为使用IE 7的浏览器模式时,则会显示fadeIn()和fadeOut()效果。

1 个答案:

答案 0 :(得分:6)

IE有一个被称为“hasLayout”的实现细节,遗憾的是,它经常泄漏过API抽象,必须正面处理......这就是你今天面临的战斗:内联元素通常不会有“布局“因此不适用于”过滤器“...这是jQuery用来模拟IE上的不透明度。

这在IE8中并不新鲜,通常你根本不必担心它,因为它正是这种特定于浏览器的疯狂,jQuery旨在用它来表达......事实上,这就是为什么我'我并不打算详细了解“hasLayout”和“过滤器”实际意味着什么 - 你可能不关心,也不应该(但是,如果你感兴趣的话,谷歌吧...)

问题是,jQuery使用的hack强制布局(因此过滤器工作(因此它可以模拟不透明度(因为IE不实现它)))...它在IE8上不起作用。 不是很好吗,是吗?他们修复了display: inline元素表现为display: inline-block元素的错误,但忽略了实现人们使用他们的bug来破解支持的功能......

嗯,没什么'你可以做到这一点。给团队IE写一个讨厌的电子邮件可能会让你觉得好一点,但他们很难在IE9上工作,这应该(敲木头......)解决大多数这些问题。与此同时,你只需要手动完成IE 使用所做的事情(有点,有点,而且肯定是错误的):强制内联元素进入内联块模式:

$("myInlineElement").css({display: 'inline-block'}).faceOut();

......或者更好,put it in an IE8-only stylesheet ......