Answers:
这在IE8中不起作用(但在FF中起作用):
$("#selectList").append(new Option("option text", "value"));
此DID工作:
var o = new Option("option text", "value");
/// jquerify the DOM object 'o' so we can use the html method
$(o).html("option text");
$("#selectList").append(o);
display: table;
在不作为样式应用到选择元素。这将破坏js代码
var o = new Option('option text', 'value'); o.innerHTML = 'option text'; document.getElementById('selectList').appendChild(o);
就个人而言,我更喜欢以下语法来附加选项:
$('#mySelect').append($('<option>', {
value: 1,
text: 'My option'
}));
如果要从一组项目中添加选项,则可以执行以下操作:
$.each(items, function (i, item) {
$('#mySelect').append($('<option>', {
value: item.value,
text : item.text
}));
});
items={option1:{value:1,text:1},option2:{value:2,text:2}}
您可以使用以下语法添加选项,也可以访问jQuery中的Way handle选项以获取更多详细信息。
$('#select').append($('<option>', {value:1, text:'One'}));
$('#select').append('<option value="1">One</option>');
var option = new Option(text, value); $('#select').append($(option));
value
而不是val
)中的属性不正确。正确的代码应为$('select').append('<option value="1">One</option>');
如果选项名称或值是动态的,则无需担心其中会转义特殊字符;在这种情况下,您可能更喜欢简单的DOM方法:
var s= document.getElementById('mySelect');
s.options[s.options.length]= new Option('My option', '1');
您可以尝试-
$('#selectID').append($('<option>',
{
value: value_variable,
text : text_variable
}));
像这样-
for (i = 0; i < 10; i++)
{
$('#mySelect').append($('<option>',
{
value: i,
text : "Option "+i
}));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id='mySelect'></select>
或尝试这个-
$('#selectID').append( '<option value="'+value_variable+'">'+text_variable+'</option>' );
像这样-
for (i = 0; i < 10; i++)
{
$('#mySelect').append( '<option value="'+i+'">'+'Option '+i+'</option>' );
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id='mySelect'></select>
不论出于何种原因$("#myselect").append(new Option("text", "text"));
,在IE7 +中对我都不起作用
我不得不用 $("#myselect").html("<option value='text'>text</option>");
为了提高性能,您应该尝试仅更改DOM一次,如果要添加许多选项,则更多。
var html = '';
for (var i = 0, len = data.length; i < len; ++i) {
html.join('<option value="' + data[i]['value'] + '">' + data[i]['label'] + '</option>');
}
$('#select').append(html);
string.join()
串联字符串
我喜欢使用非jquery方法:
mySelect.add(new Option('My option', 1));
您可以在下拉菜单中动态添加选项,如下例所示。在此示例中,我获取了数组数据并将这些数组值绑定到下拉菜单,如输出屏幕截图所示
输出:
var resultData=["Mumbai","Delhi","Chennai","Goa"]
$(document).ready(function(){
var myselect = $('<select>');
$.each(resultData, function(index, key) {
myselect.append( $('<option></option>').val(key).html(key) );
});
$('#selectCity').append(myselect.html());
});
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js">
</script>
<select id="selectCity">
</select>
在任何答案中都没有提到,但有用的情况是您还希望选择该选项,您可以添加:
var o = new Option("option text", "value");
o.selected=true;
$("#mySelect").append(o);
当您附加选项并使用jquery validate时,我们发现了一些问题。您必须单击“选择多个”列表中的一项。您将添加以下代码来处理:
$("#phonelist").append("<option value='"+ 'yournewvalue' +"' >"+ 'yournewvalue' +"</option>");
$("#phonelist option:selected").removeAttr("selected"); // add to remove lase selected
$('#phonelist option[value=' + 'yournewvalue' + ']').attr('selected', true); //add new selected
这只是获得最佳性能的捷径
总是在处理许多选项时,构建一个大字符串,然后将其添加到“选择”中以获得最佳性能
fg
var $ mySelect = $('#mySelect'); var str ='';
$.each(items, function (i, item) {
// IMPORTANT: no selectors inside the loop (for the best performance)
str += "<option value='" + item.value + "'> " + item.text + "</option>";
});
// you built a big string
$mySelect.html(str); // <-- here you add the big string with a lot of options into the selector.
$mySelect.multiSelect('refresh');
var str = "";
for(var i; i = 0; i < arr.length; i++){
str += "<option value='" + item[i].value + "'> " + item[i].text + "</option>";
}
$mySelect.html(str);
$mySelect.multiSelect('refresh');
$(function () {
var option = $("<option></option>");
option.text("Display text");
option.val("1");
$("#Select1").append(option);
});
如果您从某个对象获取数据,则只需将该对象转发给功能即可...
$(function (product) {
var option = $("<option></option>");
option.text(product.Name);
option.val(product.Id);
$("#Select1").append(option);
});
Name和Id是对象属性的名称...因此您可以随意调用它们...当然还有Array ...您想使用for循环构建自定义函数...然后只需在该函数中调用准备好文件...干杯
基于独乐的回答了追加项目的集合,一个班轮for...in
也能创造奇迹:
let cities = {'ny':'New York','ld':'London','db':'Dubai','pk':'Beijing','tk':'Tokyo','nd':'New Delhi'};
for(let c in cities){$('#selectCity').append($('<option>',{value: c,text: cities[c]}))}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<select id="selectCity"></select>
对象值和索引都分配给选项。即使在旧版jQuery(v1.4)中,该解决方案也可以使用!
你可以尝试下面的代码附加到选项
<select id="mySelect"></select>
<script>
$("#mySelect").append($("<option></option>").val("1").html("My enter code hereoption"));
</script>
这是我做到的方式,带有一个添加每个选择标签的按钮。
$(document).on("click","#button",function() {
$('#id_table_AddTransactions').append('<option></option>')
}
$(document).ready(function(){ $("#button").click(function() { $('#id_table_AddTransactions').append('<option></option>'); }); });
$("#mySelect").html(....)
新选项替换当前选项。