我正在尝试创建一个具有基本列表的选择元素,然后当用户将鼠标悬停在一个选项上时,它会展开以显示更完整的列表。
我开始使用 css 隐藏我想要隐藏的所有值,但这并没有调整选择下拉列表的高度,所以我留下了很多空白。
然后我尝试有两个选择,一个带有简化列表,另一个带有完整列表(隐藏)。然后,当用户将鼠标悬停在“其他”选项组上时,我使用 javascript 将选项从完整列表复制到简化列表。代码如下所示。
html:
<select id="Title">
<option value="">Select...</option>
<option value="MR">Mr</option>
<option value="MISS">Miss</option>
<option value="MRS">Mrs</option>
<optgroup label="Other">Other</optgroup>
</select>
<select id="FullTitle" style="display:none">
<option value="">Select...</option>
<option value="MR">Mr</option>
<option value="MISS">Miss</option>
<option value="MRS">Mrs</option>
<option value="MS">Ms</option>
<option value="DR">Doctor</option>
</select>
Javascript:
<script type="text/javascript">
$('select').find('optgroup').hover(
function () {
var parent = $(this).parent()
var selected = parent.find('option:selected').val()
var id = "#Full" + parent.attr('id')
parent.html($(id).html())
parent.find('option[value="'+ selected +'"]').attr('selected', 'selected')
})
</script>
这在 Firefox 中运行良好,但在 IE 或 Chrome 中均无效。我不确定为什么。
我想知道是否有人知道为什么这不起作用或解决我的问题的更好方法?