我已经仔细地仔细查看了这个问题的答案了几个小时,但却无法想出答案.
我有一个选择框,根据所选选项的背景颜色更改背景颜色.此功能适用于Chrome,但不适用于Firefox,无论您选择哪个选项,它都会变为蓝色并保持蓝色.所选选项的文本显示在选择中,但不显示在背景颜色中.
我已经尝试过使用css like :: selected {}.我最接近的是使用不同的StackOverflow答案来创建一个阴影框或在焦点改变时改变颜色,但到目前为止还没有真正的运气.
这是我的代码:
CSS:
#WHITE {background-color: white;}
#GRAY {background-color: rgb(194,194,194);}
#PINK {background-color: rgb(255,153,203);}
#YELLOW {background-color: rgb(254,255,153);}
#ORANGE {background-color: rgb(255,204,154);}
jQuery的:
$(document).ready( function () {
var color = $("option:selected", "#colorSlct").css("background-color");
$("#colorSlct").css ("background-color", color);
});
$(document).on('change', '#colorSlct', function () {
var color1 = $("option:selected", this).css("background-color");
$("#colorSlct").css ("background-color", color1);
});
CSP:
<select id = "colorSlct" type = "select" class = "select2" style = "margin-left: 0;">
<option id = "WHITE"> </option>
<option id = "GRAY" #($s(color="GRAY":"selected='selected'",1:""))#> Gray </option>
<option id = "PINK" #($s(color="PINK":"selected='selected'",1:""))#> Pink </option>
<option id = "YELLOW" #($s(color="YELLOW":"selected='selected'",1:""))#> Yellow </option>
<option id = "ORANGE" #($s(color="ORANGE":"selected='selected'",1:""))#> Orange </option>
</select>
任何提示将不胜感激.非常感谢您的帮助.
最佳答案 这似乎是当Firefox选择一个选项时,它将其背景颜色设置为蓝色,以使用CSS突出显示选择.您可以通过单击下拉箭头并看到所选元素确实是蓝色来查看此信息. (这可能是通过其他浏览器中的不同机制完成的,因此行为不同)
因此,每当您获得所选元素的背景颜色时,它将始终返回蓝色 – rgb(51,153,255).
解决方法是使用其他一些提示来告诉您要使用的颜色.
如果将ID更改为类,则可以执行以下操作:
function changeSel() {
var selected = $("option:selected", "#colorSlct");
$("#colorSlct").removeClass().addClass(selected[0].className);
}
changeSel()
$(document).on('change', '#colorSlct', changeSel);
演示:http://jsfiddle.net/jtbowden/63fnozyw/3/
当然,这假设选项只有一个类.您也可以使用ID进行查找,或同时使用类/ ID:
function changeSel() {
var selected = $("option:selected", "#colorSlct");
$("#colorSlct").removeClass().addClass(selected.attr("id"));
}
changeSel()
$(document).on('change', '#colorSlct', changeSel);
CSS:
#WHITE, .WHITE {
background-color: white;
}
#GRAY, .GRAY {
background-color: rgb(194, 194, 194);
}
// etc, etc