【发布时间】:2012-08-26 13:28:18
【问题描述】:
如何将 CSS 背景颜色仅应用于所选选项?如果我将一个类应用于选择对象,它会设置所有选项的样式。如果我将所需的类应用于选项,我可以在扩展“选择”框时,可以看到所有选项的样式精细。但是,当“选择”框折叠时,所选选项的样式消失。我在最新版本的 Chrome 和 Firefox 中观察到了这种行为。
这是一些超级基本的示例代码。如果没有 jQuery,所选选项始终显示为无样式。使用 jQuery,一旦选择了“已修改”选项,所有选项的样式都将被设置为“已修改”。我一直无法找到解决这个问题的方法...有什么想法吗?
我不想更改选项的样式。只有在选择任何给定选项时才能看到其样式,而不会覆盖其他选项的样式。
<style>
select.modified,
option.modified{
background-color: red;
}
</style>
<select id="example">
<option value="bird" class="modified">bird</option>
<option value="cat">cat</option>
<option value="dog" class="modified">dog</option>
</select>
<script>
$('#example').on('change',function(){
$(this).prop('class',$(this).find('option:selected').prop('class'));
});
</script>
【问题讨论】:
-
你的意思是
option.modified? -
浏览器的特点是难以为复选框、单选按钮和多选/选择等元素设置样式。通常,解决方法是隐藏实际的表单元素,并在其旁边放置一个可样式化的交互式
div。 -
在某些浏览器(即 chrome + linux)中存在错误,这使得
<option>无法从<select>继承背景,因此您应该始终(在设置选择背景时)为所有选项设置它.
标签: javascript jquery css select option