Как говорится в этом вопросе, как добавить новую опцию в DropDownList с помощью jQuery?
Спасибо
Как говорится в этом вопросе, как добавить новую опцию в DropDownList с помощью jQuery?
Спасибо
Без использования каких-либо дополнительных плагинов
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 не поддерживают его.
Мы можем создать новый элемент select, а затем добавить все параметры. После завершения цикла добавьте его к реальному объекту 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 только один раз!
Без плагинов это может быть проще, если вы не используете столько 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) );
С плагином: jQuery Selection Box. Вы можете сделать это:
var myOptions = {
"Value 1" : "Text 1",
"Value 2" : "Text 2",
"Value 3" : "Text 3"
}
$("#myselect2").addOption(myOptions, false);
Возможно, вам захочется сначала очистить DropDown $ ( '# DropDownQuality') пусто();.
У меня был мой контроллер в MVC, который возвращает список выбора только с одним элементом.
$('#DropDownQuality').append(
$('<option></option>').val(data[0].Value).html(data[0].Text));
Добавить элемент в список в начале
$("#ddlList").prepend('<option selected="selected" value="0"> Select </option>');
Добавить элемент в список в конце
$('<option value="6">Java Script</option>').appendTo("#ddlList");
Общая операция выпадающего (Get, Set, Add, Remove) с помощью jQuery
Заметка Pease @Phrogz не работает в IE 8, а @nickf работает во всех основных браузерах. Другой подход:
$.each(myOptions, function(val, text) {
$("#mySelect").append($("<option/>").attr("value", val).text(text));
});
U может использовать прямой
$"(.ddlClassName").Html("<option selected=\"selected\" value=\"1\">1</option><option value=\"2\">2</option>")
- > Здесь вы можете использовать прямую строку
Кроме того, используйте .prepend(), чтобы добавить опцию в начало списка опций. http://api.jquery.com/prepend/
с помощью jquery вы можете использовать
this.$('select#myid').append('<option>newvalue</option>');
где " myid" - это id раскрывающегося списка, а newvalue - это текст, который вы хотите вставить.
Мне нужно было добавить столько вариантов для выпадающих списков, сколько на моей странице были выпадающие списки. Поэтому я использовал его таким образом:
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" в поле и т.д.).
Было смешно, что я не мог использовать this
или this.Object
или $.obj
или что-то подобное в моем втором .each()
, хотя --- мне действительно нужно было получить конкретный идентификатор этого объекта, а затем захватить и передать весь объект моей функции до того, как она будет добавлена. К счастью, идентификатор моего раскрывающегося списка был разделен "_", и я мог его схватить. Я не чувствую, что должен был это сделать, но в противном случае это давало мне исключения jQuery. Что-то, что кто-то борется с тем, что мне было бы интересно узнать.
попробуйте эту функцию:
function addtoselect(param,value){
$('#mySelectBox').append('<option value='+value+'>'+param+'</option>');
}