正如问题所说,如何使用jQuery向DropDownList添加新选项?
由于
答案 0 :(得分:450)
不使用任何额外的插件,
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
是提高速度的好选择,但我们无法使用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一次!
答案 1 :(得分:161)
没有插件,如果不使用尽可能多的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) );
答案 2 :(得分:13)
使用插件:jQuery Selection Box。你可以这样做:
var myOptions = {
"Value 1" : "Text 1",
"Value 2" : "Text 2",
"Value 3" : "Text 3"
}
$("#myselect2").addOption(myOptions, false);
答案 3 :(得分:9)
您可能需要先清除DropDown $( '#DropDownQuality')空(); 强>
我让MVC中的控制器返回一个只有一个项目的选择列表。
$('#DropDownQuality').append(
$('<option></option>').val(data[0].Value).html(data[0].Text));
答案 4 :(得分:7)
在开头
中添加项目到列表$("#ddlList").prepend('<option selected="selected" value="0"> Select </option>');
在最后添加项目到列表
$('<option value="6">Java Script</option>').appendTo("#ddlList");
Common Dropdown operation (Get, Set, Add, Remove) using jQuery
答案 5 :(得分:4)
Pease note @ Phrogz的解决方案在IE 8中不起作用,而@ nickf适用于所有主流浏览器。另一种方法是:
$.each(myOptions, function(val, text) {
$("#mySelect").append($("<option/>").attr("value", val).text(text));
});
答案 6 :(得分:3)
你可以直接使用
$"(.ddlClassName").Html("<option selected=\"selected\" value=\"1\">1</option><option value=\"2\">2</option>")
- &GT;在这里你可以使用直接字符串
答案 7 :(得分:3)
此外,使用.prepend()将选项添加到选项列表的开头。 http://api.jquery.com/prepend/
答案 8 :(得分:0)
使用jquery你可以使用
this.$('select#myid').append('<option>newvalue</option>');
其中&#34; myid &#34;是下拉列表的 id , newvalue 是您要插入的文字..
答案 9 :(得分:0)
我需要在下拉列表中添加尽可能多的选项,因为我的页面上有下拉列表。所以我用这种方式使用它:
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()
或其他类似内容,这是荒谬的,但实际上我必须得到该对象的特定ID然后在它追加之前抓取并将整个对象传递给我的函数。幸运的是,我的下拉列表的ID由“_”分隔,我可以抓住它。我不觉得我应该这样做,但它不断给我jQuery例外。其他人与我所挣扎的事情可能会让人知道。
答案 10 :(得分:0)
让我们以为您的答复是“ 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)
);
});
} }
这对您有用....
答案 11 :(得分:-1)
尝试此功能:
function addtoselect(param,value){
$('#mySelectBox').append('<option value='+value+'>'+param+'</option>');
}