【发布时间】:2012-10-05 14:34:05
【问题描述】:
我有一个包含多个 HTML select 下拉列表的页面,并且需要填充元素的 onclick。此填充是在 select 元素的单击事件侦听器中使用 AJAX 调用完成的。
这样做的原因是性能和负载非常重要,因此它们不能在页面加载时填充。
此外,设计必须使用原生 HTML select 元素。
我创建了一个 jsFiddle 演示来展示这个问题。当您单击select 时,项目被填充,select 的宽度因此增加。
但是select 仅显示初始选项(在 AJAX 填充之前)。
------ View Demo ------
演示使用 50 毫秒的 setTimeout() 来模拟 AJAX 响应时间。
我怎样才能让它填充onclick,并正确显示?
有没有办法在人口响应回调时打开select?
编辑:或者,是否有一个 jQuery 插件下拉列表,它使用浏览器的本机主题进行样式设置?
到目前为止我所做的尝试
- 在悬停时填充
select,但是快速用户可以在选项加载之前打开select。此外,如果用户一直向下滚动页面,并且滚动到每个select,这将导致大量不必要的 AJAX 调用。 - 将事件侦听器更改为
focus而不是click(如@AndyPerlitch 建议的那样)。但是,如果 AJAX 请求只用了 50 毫秒来响应,这将不起作用。 (See Demo) - 将事件监听器改为
mousedown与focus效果相同
更新:这在 FireFox 中不是问题。 select 打开,然后加载新项目并显示它们,所有这些都处于打开状态。
【问题讨论】:
-
用
.mousedown()怎么样? -
@Teneff 不幸的是没有。 jsfiddle.net/PJvM3/9
标签: javascript jquery html ajax select