使用jQuery向<select>添加选项?

Cli*_*ote 705 javascript jquery

option使用jQuery 添加到下拉列表的最简单方法是什么?

这会有用吗?

$("#mySelect").append('<option value=1>My option</option>');
Run Code Online (Sandbox Code Playgroud)

dul*_*ule 788

就个人而言,我更喜欢这种语法来附加选项:

$('#mySelect').append($('<option>', {
    value: 1,
    text: 'My option'
}));
Run Code Online (Sandbox Code Playgroud)

如果要从项目集合中添加选项,则可以执行以下操作:

$.each(items, function (i, item) {
    $('#mySelect').append($('<option>', { 
        value: item.value,
        text : item.text 
    }));
});
Run Code Online (Sandbox Code Playgroud)

  • 如果你添加了很多选项,那么这只会很慢,只需要构建一个html字符串并附加它 (22认同)
  • {selected:true} (10认同)
  • 谢谢@dule,但我如何才能默认选择新选项? (4认同)
  • 在IE中工作不像很多解决方案 (3认同)
  • @Rop`itements = {option1:{value:1,text:1},option2:{value:2,text:2}}` (3认同)

小智 240

这在IE8中不起作用(但在FF中也是如此):

$("#selectList").append(new Option("option text", "value"));
Run Code Online (Sandbox Code Playgroud)

这个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);
Run Code Online (Sandbox Code Playgroud)

  • +1 - 为我工作而无需“jquerify”对象。`var o = new Option('option text', 'value'); o.innerHTML = '选项文本'; document.getElementById('selectList').appendChild(o);` (3认同)
  • 有没有办法向其中添加“data-xxx”值? (3认同)

小智 111

您可以使用以下语法添加选项.您还可以访问jQuery中的方法句柄选项以获取更多详细信息.

  1. $('#select').append($('<option>', {value:1, text:'One'}));

  2. $('#select').append('<option value="1">One</option>');

  3. var option = new Option(text, value); $('#select').append($(option));

  • 第二个选项标签中的属性不正确(“value”而不是“val”)。正确的代码应该是 `$('select').append('&lt;option value="1"&gt;One&lt;/option&gt;');` (2认同)

bob*_*nce 45

如果选项名称或值是动态的,您不必担心转义其中的特殊字符; 在这里你可能更喜欢简单的DOM方法:

var s= document.getElementById('mySelect');
s.options[s.options.length]= new Option('My option', '1');
Run Code Online (Sandbox Code Playgroud)

  • 这在javascript方面很简单,jquery让人们感觉太容易了 (27认同)
  • 对我来说看起来没那么简单!! (2认同)

Abr*_*hin 33

选项1-

你可以尝试这个 -

$('#selectID').append($('<option>',
 {
    value: value_variable,
    text : text_variable
}));
Run Code Online (Sandbox Code Playgroud)

像这样-

for (i = 0; i < 10; i++)
{ 
     $('#mySelect').append($('<option>',
     {
        value: i,
        text : "Option "+i 
    }));
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<select id='mySelect'></select>
Run Code Online (Sandbox Code Playgroud)

选项2-

或试试这个 -

$('#selectID').append( '<option value="'+value_variable+'">'+text_variable+'</option>' );
Run Code Online (Sandbox Code Playgroud)

像这样-

for (i = 0; i < 10; i++)
{ 
     $('#mySelect').append( '<option value="'+i+'">'+'Option '+i+'</option>' );
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<select id='mySelect'></select>
Run Code Online (Sandbox Code Playgroud)


Rus*_*Cam 18

这很好用.

如果添加多个选项元素,我建议执行一次追加,而不是在每个元素上执行追加.


小智 18

无论出于何种原因$("#myselect").append(new Option("text", "text"));,在IE7 +中我都不能为我工作

我不得不使用 $("#myselect").html("<option value='text'>text</option>");


小智 15

这个很简单的事情.你可以通过这种方式做到这一点

$('#select_id').append('<option value="five" selected="selected">Five</option>');
Run Code Online (Sandbox Code Playgroud)

要么

$('#select_id').append($('<option>', {
                    value: 1,
                    text: 'One'
                }));
Run Code Online (Sandbox Code Playgroud)


Joh*_*lia 14

为了帮助提高性能,您应该尝试仅更改一次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);
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的解决方案。我在示例中遇到了“join()”不是有效函数的问题,但此解决方案允许您使用 jQuery“promise”来确定何时添加所有选项以及 DOM 完成更新。对于其他逐一添加选项的解决方案,这并不容易完成。将示例中的最后一行替换为以下内容,以便仅在 DOM 修改完成后才执行操作: $.when($('#select').append(html)).done(function () { callSomeFunctionThatRequiresOptionsToBeSet() } ); (2认同)

szp*_*pas 13

$('#mySelect').empty().append('<option value=1>My option</option>').selectmenu('refresh');
Run Code Online (Sandbox Code Playgroud)

  • 除非我弄错了,否则这个解决方案不仅需要jQuery,还需要jQueryUI.`selectmenu()`不是jQuery核心的一部分,是一个jQueryUI [widget](http://wiki.jqueryui.com/w/page/12138056/Selectmenu).这使得它成为一个非常严厉的解决方案,不是吗? (8认同)

cai*_*ura 12

我喜欢使用非jquery方法:

mySelect.add(new Option('My option', 1));
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢它是非jquery;)不要经常看到它 (3认同)
  • 是的,虽然我不能质疑jquery的力量,但有些情况并不能简化事情. (3认同)

GSB*_*GSB 11

您可以动态地将选项添加到下拉列表中,如下例所示.在这个示例中,我已经获取了数组数据并将这些数组值绑定到下拉列表,如输出屏幕截图所示

输出:

在此输入图像描述

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());
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js">
</script>

<select  id="selectCity">

</select>
Run Code Online (Sandbox Code Playgroud)


Edu*_*scu 9

在任何答案中都没有提到,但有用的是您希望同时选择该选项的情况,您可以添加:

var o = new Option("option text", "value");
o.selected=true;
$("#mySelect").append(o);
Run Code Online (Sandbox Code Playgroud)


Sal*_*lim 9

var select = $('#myselect');
var newOptions = {
                'red' : 'Red',
                'blue' : 'Blue',
                'green' : 'Green',
                'yellow' : 'Yellow'
            };
$('option', select).remove();
$.each(newOptions, function(text, key) {
    var option = new Option(key, text);
    select.append($(option));
});
Run Code Online (Sandbox Code Playgroud)


ATO*_*TOA 6

如果您想在选择中的特定索引处插入新选项:

$("#my_select option").eq(2).before($('<option>', {
    value: 'New Item',
    text: 'New Item'
}));
Run Code Online (Sandbox Code Playgroud)

这将插入“新项目”作为选择中的第三个项目。


Joã*_*ira 6

为什么不简单?

$('<option/>')
  .val(optionVal)
  .text('some option')
  .appendTo('#mySelect')
Run Code Online (Sandbox Code Playgroud)


Dul*_*sta 5

有两种方法。您可以使用这两个。

第一:

$('#waterTransportationFrom').append('<option value="select" selected="selected">Select From Dropdown List</option>');
Run Code Online (Sandbox Code Playgroud)

第二:

$.each(dataCollecton, function(val, text) {            
    options.append($('<option></option>').val(text.route).html(text.route));
});
Run Code Online (Sandbox Code Playgroud)