2010-06-24 31 views
6

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

+0

适合我。你的html标记是否有效?如果不是IE,“IT”认为是最好的,这通常是错误的。 (与使用标准相比) – Aren 2010-06-24 23:18:45

回答

6

IE有一个被称为“hasLayout”的实现细节,不幸的是,这些实现细节经常会泄漏通过API抽象,必须正面处理......这是您今天面对的战斗:内联元素通常不会有“布局”,因此将无法与“过滤器”......这是jQuery用来模拟IE上的不透明度。

这在IE8中并不是什么新东西,通常你根本不用担心它,因为这正是jQuery打算用这种方式浏览器的疯狂行为......事实上,这就是为什么我对于“hasLayout”和“filters”实际上意味着什么没有详细讨论 - 你可能不在乎,也不应该(但是,如果你有兴趣,可以google ...)

问题是,jQuery在引擎盖下强制布局(所以过滤器工作(所以它可以模拟不透明度(因为IE不实现它)))...它不能在IE8上工作的黑客攻击。是不是太好了,呃?他们修复了错误,display: inline元素表现为display: inline-block元素,但忽略了实现人们正在使用他们的bug来破解的功能,以支持...

那么,没有什么可以做的。给Team IE写一封讨厌的电子邮件可能会让你感觉好一些,但他们在IE9上工作很努力,应该(敲开木头......)解决大部分这些问题。在此期间,你就得做什么手动IE 使用做(有点儿,八九不离十,而且肯定不正确地)全部由自己:强制内联元素变成inline-block的模式:

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

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