2012-12-12 39 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