使用核心jQuery,如何删除选择框的所有选项,然后添加一个选项并选择它?
我的选择框如下 .
<Select id="mySelect" size="9" </Select>
编辑:以下代码有助于链接 . 但是,(在Internet Explorer中) .val('whatever')
未选择已添加的选项 . (我确实在 .append
和 .val
中都使用了相同的'value' . )
$('#mySelect').find('option').remove().end().append('<option value="whatever">text</option>').val('whatever');
编辑:试图让它模仿这个代码,每当页面/窗体重置时,我使用以下代码 . 此选择框由一组单选按钮填充 . .focus()
更接近,但该选项似乎没有像 .selected= "true"
那样被选中 . 我现有的代码没有任何问题 - 我只是想学习jQuery .
var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";
编辑:选择的答案接近我需要的 . 这对我有用:
$('#mySelect').children().remove().end().append('<option selected value="whatever">text</option>') ;
但这两个答案都让我得到了最后的解决方案..
21 回答
第一行代码将删除选择框的所有选项,因为没有提到任何选项查找条件 .
第二行代码将添加具有指定值(“testValue”)和Text(“TestText”)的Option .
你可以简单地替换html
感谢我收到的答案,我能够创建符合我需求的以下内容 . 我的问题有些含糊不清 . 感谢您的跟进 . 通过在我想要选择的选项中包含“已选择”来解决我的最终问题 .
我在网上发现了类似下面的内容 . 有了成千上万的选项,比如我的情况,这比jQuery的
.empty()
或.find().remove()
快得多 .更多信息here .
如果您的目标是从第一个选项中删除所有选项(通常是“请选择项目”选项),您可以使用:
这将使用新的mySelect替换现有的mySelect .
我在IE7中有一个错误(在IE6中工作正常),使用上面的jQuery方法将清除DOM中的选择而不是屏幕上的选择 . 使用IE Developer Toolbar我可以确认选择已被清除并有新项目,但在视觉上选择仍显示旧项目 - 即使您无法选择它们 .
解决方法是使用标准的DOM方法/特性(如海报原版)清除而不是jQuery - 仍然使用jQuery添加选项 .
首先清除所有现有选项execpt第一个( - 选择 - )
逐个使用循环追加新选项值
其他方式:
在这个链接下,有良好做法https://api.jquery.com/select/
保存要附加在对象中的选项值
清除select标记中的现有选项
迭代列表对象并将内容附加到预期的选择标记
在mauretto的回答基础上,这更容易阅读和理解:
要删除除具有特定值的选项以外的所有选项,您可以使用:
如果要添加的选项已经存在,那将会更好 .
如何将html更改为新数据呢 .
另一个例子:
使用jquery prop()清除所选选项
不确定“添加一个并选择它”的确切含义,因为无论如何都会默认选择它 . 但是,如果你要添加多个,那就更有意义了 . 怎么样的:
Response to "EDIT" :你能澄清"This select box is populated by a set of radio buttons"的意思吗? <select>元素不能(合法地)包含<input type = "radio">元素 .
为什么不只是使用普通的JavaScript?
希望它会奏效