答案 0 :(得分:3)
使用JS,您可以添加mining
和focus
事件侦听器来修改blur
的文本:
option

function focus() {
[].forEach.call(this.options, function(o) {
o.textContent = o.getAttribute('value') + ' (' + o.getAttribute('data-descr') + ')';
});
}
function blur() {
[].forEach.call(this.options, function(o) {
console.log(o);
o.textContent = o.getAttribute('value');
});
}
[].forEach.call(document.querySelectorAll('.shortened-select'), function(s) {
s.addEventListener('focus', focus);
s.addEventListener('blur', blur);
blur.call(s);
});

答案 1 :(得分:2)
您可以创建第二个select
元素,该元素具有缩写选项。默认情况下显示它并使用未缩写的选项隐藏select
元素。
当缩位select
悬停时,显示另一个select
元素。
更改选项时,请将缩写的select
元素selectedIndex
设置为匹配,这样可使两个元素保持同步:
document.getElementById('s2').addEventListener('input', function() {
document.getElementById('s1').selectedIndex= this.selectedIndex;
});

#s1 {
position: absolute;
}
#s2 {
display: none;
}
#s2:hover, #s1:hover + select {
position: relative;
display: inline;
}

<select id="s1">
<option>Open</option>
<option>Closed</option>
</select>
<select id="s2">
<option>Open (some description)</option>
<option>Closed (a bunch of text</option>
</select>
&#13;
答案 2 :(得分:0)
没有javascript和尝试节省空间的最佳方式是:
<select size="5">
<option title="(some description)">Open</option>
<option title="(a bunch of text)">Closed</option>
</select>
&#13;
一旦鼠标悬停在选项上,
title
将显示为工具提示
答案 3 :(得分:0)
您可以尝试CSS伪元素。由于它们只是样式,因此不会影响select
的值,因此在select
关闭时不会显示插入的文本。
option:after {
content: ' (' attr(data-descr) ')';
}
<select>
<option data-descr="some description">Open</option>
<option data-descr="a bunch of text">Closed</option>
</select>
如果您希望select
缩小到短文本的宽度,则只能在:focus
显示伪元素。
select:focus > option:after {
content: ' (' attr(data-descr) ')';
}
<select>
<option data-descr="some description">Open</option>
<option data-descr="a bunch of text">Closed</option>
</select>