Ответы:
Без использования каких-либо дополнительных плагинов,
var myOptions = {
val1 : 'text1',
val2 : 'text2'
};
var mySelect = $('#mySelect');
$.each(myOptions, function(val, text) {
mySelect.append(
$('<option></option>').val(val).html(text)
);
});
Если у вас было много опций, или этот код нужно было запускать очень часто, то вам следует рассмотреть возможность использования DocumentFragment вместо того, чтобы многократно модифицировать DOM. Только для нескольких вариантов я бы сказал, что это того не стоит.
------------------------------- Добавлено ------------------ --------------
DocumentFragment
хороший вариант для повышения скорости, но мы не можем создать элемент option, используя document.createElement('option')
IE6 и IE7, его не поддерживают.
Что мы можем сделать, это создать новый элемент выбора и затем добавить все параметры. После завершения цикла добавьте его к реальному объекту DOM.
var myOptions = {
val1 : 'text1',
val2 : 'text2'
};
var _select = $('<select>');
$.each(myOptions, function(val, text) {
_select.append(
$('<option></option>').val(val).html(text)
);
});
$('#mySelect').append(_select.html());
Таким образом, мы изменим DOM только один раз!
val
и на text
самом деле описать переменные и их использование.
mySelect.append(new Option(text, val));
, который не работал в IE8. Я должен был переключиться на @ nickf'smySelect.append($('<option></option>').val(val).html(text));
.attr('selected', true|false)
Без плагинов, это может быть проще без использования большого количества jQuery, вместо этого немного более старой школы:
var myOptions = {
val1 : 'text1',
val2 : 'text2'
};
$.each(myOptions, function(val, text) {
$('#mySelect').append( new Option(text,val) );
});
Если вы хотите указать, является ли параметр a) выбранным по умолчанию, и b) должен быть выбран сейчас, вы можете передать еще два параметра:
var defaultSelected = false;
var nowSelected = true;
$('#mySelect').append( new Option(text,val,defaultSelected,nowSelected) );
"<option></option>"
метод; это кажется грязным.
С плагином: окно выбора jQuery . Ты можешь сделать это:
var myOptions = {
"Value 1" : "Text 1",
"Value 2" : "Text 2",
"Value 3" : "Text 3"
}
$("#myselect2").addOption(myOptions, false);
Добавить товар в список в начале
$("#ddlList").prepend('<option selected="selected" value="0"> Select </option>');
Добавить элемент в список в конце
$('<option value="6">Java Script</option>').appendTo("#ddlList");
Обычная выпадающая операция (Get, Set, Add, Remove) с использованием jQuery
.prepend("...") / $("...")
на .prepend('...') / $('...')
исправление фрагмента.
А также используйте .prepend (), чтобы добавить опцию в начало списка опций. http://api.jquery.com/prepend/
Мне нужно было добавить столько опций в выпадающие списки, сколько было выпадающих на моей странице. Так что я использовал это так:
function myAppender(obj, value, text){
obj.append($('<option></option>').val(value).html(text));
}
$(document).ready(function() {
var counter = 0;
var builder = 0;
// Get the number of dropdowns
$('[id*="ddlPosition_"]').each(function() {
counter++;
});
// Add the options for each dropdown
$('[id*="ddlPosition_"]').each(function() {
var myId = this.id.split('_')[1];
// Add each option in a loop for the specific dropdown we are on
for (var i=0; i<counter; i++) {
myAppender($('[id*="ddlPosition_'+myId+'"]'), i, i+1);
}
$('[id*="ddlPosition_'+myId+'"]').val(builder);
builder++;
});
});
При этом динамически устанавливаются выпадающие списки со значениями, такими как 1 до n, и автоматически выбирается значение для порядка, в котором был выпадающий список (т. Е. 2-й выпадающий список получил «2» в поле и т. Д.).
Было смешно, что я не мог использовать this
или this.Object
или $.obj
что-то подобное в моем втором .each()
, хотя - мне действительно нужно было получить конкретный идентификатор этого объекта, а затем захватить и передать весь этот объект в мою функцию, прежде чем он добавится. К счастью, идентификатор моего выпадающего списка был отделен знаком "_", и я смог его получить. Я не чувствую, что должен был, но это продолжало давать мне исключения jQuery в противном случае. Что-то, что борется с тем, кем я был, может быть приятно знать.
Давайте думать, что ваш ответ "successData". Он содержит список, который необходимо добавить в качестве параметров в раскрывающемся меню.
success: function (successData) {
var sizeOfData = successData.length;
if (sizeOfData == 0) {
// NO DATA, throw an alert ...
alert ("No Data Found");
} else {
$.each(successData, function(val, text) {
mySelect.append(
$('<option></option>').val(val).html(text)
);
});
} }
Это будет работать для вас ....
попробуйте эту функцию:
function addtoselect(param,value){
$('#mySelectBox').append('<option value='+value+'>'+param+'</option>');
}