选择后用透明文本选择HTML?

时间:2013-05-10 13:56:37

标签: jquery html colors html-select

我有一个带有不同彩色背景选项的HTML选择。它工作正常但我需要一件小事。下拉选项中的文本只应在下拉列表打开时显示。基本上当我选择一个选项时,我想要透明文字,所以我只能看到颜色。

Jquery的:

$(document).ready(function () {
        $('select[id^=dropdown]').children().each(function () {
            colors = { "N": "lightgrey", "G": "green", "O": "orange", "A": "yellow", "R": "red", "U": "purple" }
            $(this).attr('style', 'background-color:' + colors[$(this).val()] + ';');
        });
        $('select[id^=dropdown]').change(function () {
            $(this).attr('style', $(this).find('option:selected').attr('style'));
        }).change();
    });

HTML选择:

<select class="selectElement" runat="server" id="dropdown_test">
    <option value="N">N</option>
    <option value="G">G</option>
    <option value="O">O</option>
    <option value="A">A</option>
    <option value="R">R</option>
    <option value="U">U</option>
</select>

3 个答案:

答案 0 :(得分:2)

尝试此代码,适用于包括IE的每个浏览器:

HTML

    <select id="select1" onchange="colourFunction()">
<option class="white" value="A">This should have a WHITE background</option>
<option class="red" value="B">This should have a RED background</option>
<option class="yellow" value="C">This should have a YELLOW background</option>
<option class="green" value="D">This should have a GREEN background</option>
</select>

CSS

#select1 {width:150px; color:rgba(0, 0, 0, 0);}
#select1:focus, #select1:focus {
color:black;
}
.white {background:white;}
.red {background:red;}
.yellow {background:yellow;}
.green {background:green}

JS

function colourFunction() {
var myselect = document.getElementById("select1"),
colour = myselect.options[myselect.selectedIndex].className;
myselect.className = colour;
myselect.blur(); //This just unselects the select list without having to click
somewhere else on the page
}

HTH:)

答案 1 :(得分:1)

如果您仍想要透明文字选项,请尝试以下操作:

$(document).ready(function () {
    $('#dropdown').children().each(function () {
        colors = { "N": "lightgrey", "G": "green", "O": "orange", "A": "yellow", "R": "red", "U": "purple" }
        $(this).attr('style', 'background-color:' + colors[$(this).val()] + ';');
        $('#dropdown option').css('color','black'); 
    });

    $('#dropdown').change(function() { SetStyle(this) })


});

SetStyle('#dropdown'); //Set the style immediately

function SetStyle(obj) { 
    var color = $(obj).find('option:selected').css('background-color');
    $(obj).css({
        'color':'rgba(0,0,0,0)',
        'background-color':color
    });
}

所以我们走了,最后的尝试!这将在加载时设置背景颜色,并将颜色设置为透明。然后它会将所有选项的颜色设置为黑色。所以看起来下拉列表中没有文字,但是当它打开时就会出现。但实际上,有文字,它是黑色的,你只是在它关闭时看不到它。

这比我之前的回答更好:))

注意我已经从

修改了你的选择器
 $('select[id^=dropdown]')

 $('#dropdown')

您不需要选择属性“Id”等于xxx的元素,“#”是其中的简称:)

希望这有帮助!

答案 2 :(得分:0)

使用此: 用于在选择项目时删除文本

$('select[id^=dropdown]').change(function () {
    var elem = $(this).children("*[value='" + $(this).val() + "']");
    elem.data("backup",elem.html()).html("");
    $(this).attr('style', 'background-color:' + colors[elem.val()] + ';');
});

但你需要声明阵列颜色。