2009-11-13 3 views
53

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

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? Я тестировал без этой строки, и переменная зданий имеет свой элемент данных.

+0

увидеть мой ответ на http://stackoverflow.com/a/9995132/740639 –

ответ

13
$('#dropListBuilding').append('<option>'+val+'</option>'); 
+0

Не добавляйте, если он уже добавлен? Как? (у меня есть слайд1, слайд2, вернуться и повторить) – YumYumYum

16

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

var ddl = $("#dropListBuilding"); 
for (k = 0; k < buildings.length; k++) 
    ddl.append("<option value='" + buildings[k]+ "'>" + buildings[k] + "</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 
6

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

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

$("#dropListBuilding")[0].options.add(new Option("My Text","My Value")) 
+0

Можете ли вы указать мне ссылку на этот метод? Я не думал, что что-то подобное существует, я думал, что метод DOM был «.options.add (' – Bob

+0

Боб, вы правы, я изменил код, чтобы использовать обычный способ JS добавления опции – duckyflip

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>"); 
} 
1

Если вы не хотите, чтобы полагаться на 3.5 кБ плагин для JQuery или не хотите, чтобы построить строку HTML в то время как escapping зарезервированные символы 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); 
111

Не делайте ваш код настолько сложным. Это может быть сделано просто, как показано ниже, используя Еогеасп типа итератора:

$.each(buildings, function (index, value) { 
    $('#dropListBuilding').append($('<option/>', { 
     value: value, 
     text : value 
    })); 
});  
+9

Единственное, что я будет добавлено к тому, что вы хотите очистить список до его заполнения. '$ ('# dropListBuilding'). html ('');' Это, на мой взгляд, завершает ответ. – Gold

+1

исправить: значение: index, – ShirleyCC

+0

спасибо вам, действительно, помогите мне .. –

0

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

success: function(data){ 
      alert("SUCCCESS"); 
      $.each(data,function(index,itemData){ 
       console.log(JSON.stringify(itemData)); 
       $("#fromDay").append(new Option(itemData.lookupLabel,itemData.id)) 
      }); 
     } 
Смежные вопросы