Answers:
无需使用任何额外的插件,
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一次!
val
与text
实际描述变量及其用途。
mySelect.append(new Option(text, val));
,但在IE8中不起作用。我不得不改用@nickfmySelect.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 Selection Box。你可以这样做:
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");
.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”,依此类推)。
荒谬的是,我无法在第二个中使用this
或this.Object
或$.obj
类似的东西.each()
,但是---我实际上必须获取该对象的特定ID,然后在将其附加之前将整个对象传递给我的函数。幸运的是,我的下拉菜单的ID用“ _”分隔,我可以抓住它。我不认为我必须这样做,但是否则它一直给我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)
);
});
} }
这将为您工作....