Как добавить опцию для выбора списка в jQuery

55

Мой список выбора называется dropListBuilding. Следующий код не работает:

 for (var i = 0; i < buildings.length; i++) {
     var val = buildings[i];
     var text = buildings[i];
     alert("value of builing at: " + i.toString() + " is: " + val);
     $("#dropListBuilding").addOption(val, text, false);
 }

Эта строка умирает:

$("#dropListBuilding").addOption(val, text, false);

Какое право добавлять элементы в раскрывающийся список jQuery? Я тестировал без этой строки, и переменная зданий имеет свой элемент данных.

Теги:
html-select

8 ответов

106

Не делайте ваш код настолько сложным. Это можно сделать просто, как показано ниже, с помощью итератора типа foreach:

$.each(buildings, function (index, value) {
    $('#dropListBuilding').append($('<option/>', { 
        value: value,
        text : value 
    }));
});      
  • 10
    Единственное, что я хотел бы добавить к этому, - это ситуация, когда вы хотите очистить список перед его заполнением. $('#dropListBuilding').html(''); Это, на мой взгляд, завершает ответ.
  • 1
    Должно быть исправлено: значение: индекс,
Показать ещё 2 комментария
16

Выполнение этого так всегда работало для меня, я надеюсь, что это поможет.

var ddl = $("#dropListBuilding");   
for (k = 0; k < buildings.length; k++)
   ddl.append("<option value='" + buildings[k]+ "'>" + buildings[k] + "</option>");
13
$('#dropListBuilding').append('<option>'+val+'</option>');
  • 0
    Не добавлять, если уже добавлено? Как? (У меня есть слайд1, слайд2, вернуться и повторить)
6

Ваш код выходит из строя, потому что вы выполняете метод (addOption) для объекта jQuery (и этот объект не поддерживает метод)

Вы можете использовать стандартную функцию Javascript следующим образом:

$("#dropListBuilding")[0].options.add( new Option("My Text","My Value") )
  • 0
    Можете ли вы указать мне ссылку на этот метод? Я не думал, что что-то подобное существует, я думал, что метод DOM был .options.add(
  • 0
    Боб, ты прав, я изменил код, чтобы использовать обычный способ добавления опции JS
2

Это прекрасно работает, попробуйте это.

var ob = $("#myListBox");

for (var i = 0; i < buildings.length; i++) {
     var val = buildings[i];
     var text = buildings[i];

     ob.prepend("<option value="+ val +">" + text + "</option>");
}
2

Похоже, вам нужен этот плагин, поскольку он следует за вашим существующим кодом, возможно, что в js файле подключался какой-то файл.

http://www.texotela.co.uk/code/jquery/select/

var myOptions = {
"Value 1" : "Text 1",
"Value 2" : "Text 2",
"Value 3" : "Text 3"
} 
$("#myselect2").addOption(myOptions, false); 
// use true if you want to select the added options » Run
1

Если вы не хотите полагаться на плагин 3.5 kB для jQuery или не хотите создавать строку HTML при сохранении зарезервированных символов HTML, вот простой способ, который работает:

function addOptionToSelectBox(selectBox, optionId, optionText, selectIt)
{
    var option = document.createElement("option");
    option.value = optionId;
    option.text = optionText;
    selectBox.options[selectBox.options.length] = option;
    if (selectIt) {
        option.selected = true;
    }
}

var selectBox = $('#veryImportantSelectBox')[0];
addOptionToSelectBox(selectBox, "ID1", "Option 1", true);
0

Для меня это работало

success: function(data){
            alert("SUCCCESS");
            $.each(data,function(index,itemData){
                console.log(JSON.stringify(itemData));
                $("#fromDay").append( new Option(itemData.lookupLabel,itemData.id) )
            });
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню