Какой самый простой способ добавить option в раскрывающийся список с помощью jQuery?
Будет ли это работать?
$("#mySelect").append('<option value=1>My option</option>');
Какой самый простой способ добавить option в раскрывающийся список с помощью jQuery?
Будет ли это работать?
$("#mySelect").append('<option value=1>My option</option>');
Это НЕ работало в 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);
Лично я предпочитаю этот синтаксис для добавления параметров:
$('#mySelect').append($('<option>', {
    value: 1,
    text: 'My option'
}));
Если вы добавляете параметры из набора элементов, вы можете сделать следующее:
$.each(items, function (i, item) {
    $('#mySelect').append($('<option>', { 
        value: item.value,
        text : item.text 
    }));
});
Вы можете добавить опцию, используя следующий синтаксис. Также вы можете посетить опцию дескриптора пути в jQuery для получения более подробной информации.
$('#select').append($('<option>', {value:1, text:'One'}));
$('#select').append('<option value="1">One</option>');
var option = new Option(text, value); $('#select').append($(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>Это хорошо работает.
Если вы добавляете несколько элементов опции, я бы рекомендовал выполнить добавление один раз, а не выполнять добавление к каждому элементу.
по какой-либо причине выполнение $("#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);
Мне нравится использовать не jquery-подход:
mySelect.add(new Option('My option', 1));
$('#mySelect').empty().append('<option value=1>My option</option>').selectmenu('refresh');
Вы можете динамически добавлять параметры в раскрывающийся список, как показано ниже. Здесь в этом примере я взял данные массива и привязал эти значения массива к выпадающему списку, как показано на скриншоте на выходе
Вывод:
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);
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));
});
Это очень простые вещи. Вы можете сделать это таким образом
$('#select_id').append('<option value="five" selected="selected">Five</option>');
или же
$('#select_id').append($('<option>', {
                    value: 1,
                    text: 'One'
                }));
Есть два пути. Вы можете использовать любой из этих двух.
Первый:
$('#waterTransportationFrom').append('<option value="select" selected="selected">Select From Dropdown List</option>');
Во-вторых:
$.each(dataCollecton, function(val, text) {            
    options.append($('<option></option>').val(text.route).html(text.route));
});
Если вы хотите вставить новую опцию в определенный индекс в select:
$("#my_select option").eq(2).before($('<option>', {
    value: 'New Item',
    text: 'New Item'
}));
Это будет вставлять "Новый элемент" в качестве третьего элемента в списке.
Вы можете добавить и установить атрибут Value с текстом:
$("#id").append($('<option></option>').attr("value", '').text(''));
$("#id").append($('<option></option>').attr("value", '4').text('Financial Institutions'));
Мы обнаружили некоторую проблему при добавлении опции и использовании проверки jquery. Вы должны щелкнуть один элемент в нескольких списках. Вы добавите этот код для обработки:
$("#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
Это просто быстрые точки для лучшей производительности
всегда, когда вы имеете дело со многими параметрами, создайте большую строку, а затем добавьте ее в "select" для лучшей производительности
f.g.
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');
Как насчет этого
var numbers = [1, 2, 3, 4, 5];
var option = '';
for (var i=0;i<numbers.length;i++){
     option += '<option value="'+ numbers[i] + '">' + numbers[i] + '</option>';
    }
    $('#items').append(option);
если у optgroup внутри выберите, u получил ошибку в DOM.
Я думаю, что лучший способ:
$("#select option:last").after($('<option value="1">my option</option>'));
U может попробовать под кодом добавить к опции
  <select id="mySelect"></select>
    <script>
          $("#mySelect").append($("<option></option>").val("1").html("My enter code hereoption"));
    </script>
$('#select_id').append($('<option>',{ value: v, text: t }));
Так я сделал это, нажав кнопку, чтобы добавить каждый тег select.
$(document).on("click","#button",function() {
   $('#id_table_AddTransactions').append('<option></option>')
}
$(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);
});
Имя и идентификатор - это имена свойств объекта... так что вы можете называть их, как хотите... И, конечно, если у вас есть Array... вы хотите создать пользовательскую функцию с циклом... а затем просто вызовите эту функцию в документ готов... Приветствия
Вы можете сделать это в ES6:
$.each(json, (i, val) => {
    $('.js-country-of-birth').append('<option value="${val.country_code}"> ${val.country} </option>');
  });
 Основываясь на ответе dule для добавления коллекции предметов, однострочный  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>Если кто-то приходит сюда в поисках способа добавления параметров со свойствами данных
Использование attr
var option = $('<option>', { value: 'the_value', text: 'some text' }).attr('family', model.family);
Использование данных - добавлена версия 1.2.3
var option = $('<option>', { value: 'the_value', text: 'some text' }).data('misc', 'misc-value);