我有一个包含多个 HTMLselect
下拉列表的页面,并且需要填充onclick
元素。此填充是在select
元素的单击事件侦听器中使用 AJAX 调用完成的。
这样做的原因是性能和负载非常关键,因此它们不能在页面加载时填充。
此外,设计必须使用原生 HTMLselect
元素。
我创建了一个 jsFiddle 演示来展示这个问题。当您单击select
项目时,项目会被填充,因此宽度会select
增加。
但是,select
仅显示初始选项(在 AJAX 填充之前)。
------ 查看演示 ------
演示使用setTimeout()
50 毫秒来模拟 AJAX 响应时间。
我怎样才能让它填充onclick
并正确显示?
有没有办法打开select
人口响应的 on 回调?
编辑:或者,是否有一个 jQuery 插件下拉列表,它使用浏览器的本机主题进行样式设置?
到目前为止我尝试过的
- 填充
select
悬停,但是快速用户可以select
在选项加载之前打开。此外,如果用户一直向下滚动页面,并且滚动到每个select
,这将导致大量不必要的 AJAX 调用。 - 将事件侦听器更改为
focus
代替click
(如@AndyPerlitch建议的那样)。但是,如果 AJAX 请求只用了 50 毫秒来响应,这将不起作用。(见演示) - 将事件侦听器更改为
mousedown
与focus
更新:这在 FireFox 中不是问题。select
打开,然后加载新项目并显示它们,所有这些都处于打开状态。