【发布时间】:2016-03-31 05:25:11
【问题描述】:
我正在尝试将自定义样式添加到 <select> 元素,但由于跨浏览器的限制,我需要知道:
- 扩展选择下拉列表时(我做了一个快速的谷歌搜索,它似乎似乎可能)
- 在
<option>元素上添加事件
第二个选项似乎适用于除 Chrome 之外的所有浏览器。我宁愿避免做一些讨厌的浏览器检测,所以如果有人有建议,我正在寻找解决这两个选项之一的方法??
以下适用于除 Chrome 以外的所有浏览器:
<select id="gender" name="gender">
<option></option>
<option class="click">Male</option>
<option>Female</option>
<option>Other</option>
</select>
<script>
element = document.getElementById('gender');
for (var iterator = 0; iterator < element.options.length; iterator++) {
var optionElement = element.options[iterator];
if (optionElement.className == 'click') {
optionElement.addEventListener('click', function() {alert('gender')})
}
}
</script>
我不能在<select> 上使用事件的原因是因为我需要知道下拉菜单是否已展开(上面的第 1 点)。我也考虑过使用onChange 事件,但浏览器似乎对它的反应不同。有些会在您单击时做出反应,有些会在您更改值时做出反应。
【问题讨论】:
-
请注意,用户无需点击即可展开选择元素并选择选项。
-
stackoverflow.com/questions/19387634/detect-drop-down-openes 看看这个。奇怪的是,其他浏览器确实检测到选项上的点击事件。我会尝试在 chrome 上引用下拉菜单的渲染或阅读有关它的文档。 (我找不到有关 chrome 渲染的文档:()
标签: javascript html google-chrome dom drop-down-menu