2010-06-24 69 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 ...