2012-12-12 63 views
3

我在做什麼這裏是非常簡單的:怪異的行爲時

當有人從一個選擇選擇一個選項,我想那選擇的背景色更改爲選擇選項顏色。

$("select").change(function(){ 
    var newcolor=$(this).children("option:selected").css("background-color"); 
    $(this).css("backgroundColor", newcolor); 
}); 

容易吧?那麼它在Firefox 17.0.1中完全不起作用(它可以在Chrome中運行)。問題是變量newcolor被填充:rgb(51, 153, 255)。最好的部分是這種顏色無處可找我的代碼,CSS或任何東西。

我試過改變background-colorbackgroundColor,childrenfind,沒有什麼作用。

有趣的部分是,如果我這樣做:

$("select").change(function(){ 
    var newcolor=$(this).children("option:first").css("background-color"); 
    $(this).css("backgroundColor", newcolor); 
}); 

並選擇第一個選項,而不是選擇一個...它的作品!

我可以使用一些類可能使它工作,但我很好奇,爲什麼會發生這種情況,並有任何方法來解決它?

編輯:增加了一個jsFiddle。用chrome和firefox試試吧!

+0

你可以設置一個jsfiddle讓我們看看發生了什麼? –

+0

[我可以強制jQuery.css(「backgroundColor」)以十六進制格式返回?](http://stackoverflow.com/questions/6177454/can-i-force-jquery-cssbackgroundcolor-returns-on-hexadecimal -format) –

+0

添加了jsFiddle – Naryl

回答

1

這是因爲選擇選項更改其背景顏色。您可以在選擇時看到它。而且這樣做是因爲用戶代理樣式表中的規則使用「選定的選項」背景顏色和顏色對選定選項進行了樣式設置。

+0

嗯我不認爲我理解你。選擇一個選項不會改變選擇的背景,你必須編碼,這就是我用這個功能做的。這裏唯一的問題是什麼讓這段代碼在Firefox中不起作用,它不僅不起作用,而且一個奇怪的藍色出現無處不在。 – Naryl

+0

選擇選項會更改選項的背景。然後,你要求瀏覽器瞭解選項的背景顏色......它告訴你。並且該顏色是選定選項在操作系統上默認顯示的藍色。實際的顏色顯然取決於諸如操作系統主題和其他東西。 –

+0

你看過jsFiddle嗎?如果你用chrome打開它,那麼理解那裏的奇怪行爲就容易多了,然後用firefox看看差異 – Naryl