我有一个Select2选项元素,可以检测并警告用户是否通过更改背景颜色更改了默认设置(使用下面的代码)
$(document).on('change', ".ctaskSelector", function(e) {
var val = $(this).val();
var index = $(".ctaskSelector").index(this);
if ( val != taskData[index].task_ID)
$(this).next().find('.select2-selection').css({'background-color':'red'})
else
$(this).next().find('.select2-selection').css({'background-color':'white'})
更改背景颜色证明太强烈,因为它掩盖了文本字段。我想改变显示项的字体颜色,而不是改变背景颜色。我已经尝试过几乎所有的css选项(How to change font color of select2 control using css 但似乎找不到会改变所选选项字体颜色的选项。
任何人都可以提供帮助。
答案 0 :(得分:1)
如果您想更改select2
中所选选项的字体颜色,请尝试以下代码:
原因是select2会做以下事情:
在您的<span>
中添加了一些<select>
; (您可以console.log($('select').html())
查看已添加的内容)
在正文下创建一个<span class="selection">
,然后使用position = absolute将其置于<select>
所以你需要先获取id($('span[aria-owns]', this).attr('aria-owns')
),
然后通过$('#'+ id)
找出该元素,最后改变背景或其他你喜欢的东西。
$('select').select2();
//change the background-color for select
$('.select2 span').css('background-color', 'yellow')
$('.select2').click(function(){
//you can uncomment below codes to see its structure
//console.log($('.select2-container').html())
//below change the background color for the input
$('#'+$('span[aria-owns]', this).attr('aria-owns'))
.parent()
.siblings('.select2-search')
.find('input')
.css('background-color', 'green')
//below change the font color for the selected option
$('#'+$('span[aria-owns]', this).attr('aria-owns'))
.find('li[aria-selected=true]')
.css('color', 'red')
//below change the font color for <select>
$('>span>span>span', this).css('color', 'blue')
//below change the background color for the arrow of <select>
$('>span .select2-selection__arrow', this).css('background-color', 'red')
});
&#13;
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<select class="select2" style="width:100%">
<option value="e1" >Element 1</option>
<option value="e2" >Element 2</option>
<option value="e3" >Element 3</option>
</select>
&#13;