2011-09-07 73 views
0

我正在使用IE7。我得到了下面的CSS規則:IE7選擇選項文字顏色顯示不正確

form [disabled] { 
    color: #999 !important; 
} 

在我禁用在SELECT每個選項一個jQuery就緒()事件:

$('#mySelect option').attr('disabled', 'disabled'); 

,然後再次啓用其中的一些禁用的選項:

('#myOption').removeAttr('disabled'); 

現在看起來都很好。在這種情況下,除第一個選項外,每個選項都有一個灰色文本。

但是,如果在頁面加載後更改了一個選項的禁用屬性,例如點擊按鈕後顏色不再改變。

如果我檢查與IE7開發工具,我可以清楚地看到,殘疾人屬性消失,且顏色設置爲原來的顏色再次(其他然後灰色),但仍選擇HAST灰色文本選項。

反過來也是如此。如果我將禁用屬性放在之前沒有禁用的選項上,我可以看到開發人員工具欄中設置的attrbibute,我可以看到顏色設置爲CSS中定義的顏色,但在實際瀏覽器窗口中看不到它。仍然是舊的顏色。

這是一些非常怪異的行爲,我知道IE7有這個錯誤(或功能?)不處理在所有禁用的表單元素。

但我希望至少在用戶不應選擇的項目上有灰色。我無法讓這個工作正常。

有什麼辦法可以讓這個工作?

+0

不'在IE7 important'工作!? – Znarkus

回答

1

舉一個簡單的變通方法,您可以爲元素的類disabled,當你禁用它們。

JS:

$('#mySelect option').addClass('disabled').attr('disabled', 'disabled'); 

JS:

('#myOption').removeClass('disabled').removeAttr('disabled'); 

CSS:

form .disabled { 
    color: #999 !important; 
} 
+0

這個問題似乎並不是CSS。正如開發人員工具欄告訴我的,顏色實際上是正確應用於選項的。 IE7只是沒有相應地渲染它。 – tyrondis

+0

那麼我的解決方案不起作用? – Znarkus