添加<选项>到<选择>在用户打开元素之前动态地打开它
Adding <options> to a <select> element dynamically just before the user opens it
全部,
我正在开发一个网络应用程序。其中一个关键屏幕包含一个相当大的表,通常在50-100行之间。
在每一行上,我都有两个<select>
元素;每个包含10-30个CCD_ 2元素。
如果我在每行的每个<select>
上包括所有<option>
元素,那么我最终可能会有6000多个元素(100行x2选择x 30个选项(。
因此,我的计划是将每次选择限制为一个选项(选定的选项(。然后,当用户单击选择时,我将使用JavaScript/jQuery来填充选项。
然后,在用户关闭选择后,我会删除除所选选项之外的所有选项。
重要的是,我正在触发JavaScript函数,该函数在focus
事件上添加选项。
在Chrome和Firefox中,这非常有效。
我设置了一个jsFiddle来演示:http://jsfiddle.net/j2zfD/
然而,在IE中,它不能正常工作。最初,当您单击选择(而不是显示菜单(时,它只是将焦点集中在选择内部。如果再次单击"选择",则会显示菜单。我猜这是因为IE试图在触发focus
事件之前显示菜单。
底线-这是不可接受的,因为您需要单击两次选择来显示选项菜单。
它也不能正常工作有时在iOS上的Safari中。(也许是因为在构建菜单和启动焦点事件之间存在竞争条件…(
我已经尝试过将逻辑移动到mousedown
事件,但这似乎会引起更多问题,因为mousedown不仅在您单击select时触发,而且在您单击任何选项时也会触发。
我猜这种方法(在需要时向select添加选项(已经成功实施了数千次;我只需要一点关于如何正确做这件事的建议。
提前感谢!
试试这个:
HTML
<select class="sel">
<option value="a">Option A</option>
</select>
jQuery
jQuery(document).ready(function($){
var option={
"a":"option a",
"b":"option b",
"c":"option c"
};
$('.sel').on('click',function(){
$('.sel').html('');
$.each(option,function(i,n){
$('.sel').append('<option value='+i+'>'+n+'</option>');
});
});
$('.sel').on('change',function(){
var selected_val=$(this).val();
var selected_option=$("option:selected",this).text();
$('.sel').html('');
$('.sel').append('<option value='+selected_val+'>'+selected_option+'</option>');
});
});
以下是演示:http://jsfiddle.net/mHGQs/
- 正在检测导航到<a name=“;最新主题”></a>
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 在<script src=“"></脚本>标签
- 等效于<script src=“;something1.json”></脚本>
- CSS/.JS问题,<ul><李>在Megamenu中
- 如何在<td></td>在Procractor中
- 显示“<script src='some.js'></脚本>"在Html文档中
- 如何将Array转换为<ul><李>以字母为标题的字母列表
- <script src=“//代码.jquery.com/jquery-1.11.1.min.js”></
- 选择<脚本></脚本>作为html正文中的纯文本
- 可折叠<UL><李>不起作用
- $.mobile.loadPage()和$(“linkBtn”).click();t负载<头部></头部&
- <脚本/>vs<脚本></脚本>webpack和angular
- Javascript/RRails-如何包装link_to而不是<a></a>在javascript
- jQuery在处理<选择><选项>
- 布局lt md已被弃用.请使用`layout gt-<xxx>`变种
- 在<%%中定义的访问变量>从<脚本></脚本>
- 页面设计<a href><按钮><输入>在JSP中
- 注入html标记<ul></ul>在我的<李></李>元素
- jQuery选择器<按钮></按钮>