正如问题所说,我如何使用jQuery添加一个新的选项到下拉列表?

谢谢


当前回答

另外,使用.prepend()将选项添加到选项列表的开头。 http://api.jquery.com/prepend/

其他回答

请注意@Phrogz的解决方案不能在ie8中运行,而@nickf的解决方案可以在所有主流浏览器中运行。另一种方法是:

$.each(myOptions, function(val, text) {
    $("#mySelect").append($("<option/>").attr("value", val).text(text));
});

jQuery选择框插件。你可以这样做:

var myOptions = {
        "Value 1" : "Text 1",
        "Value 2" : "Text 2",
        "Value 3" : "Text 3"
    }
    $("#myselect2").addOption(myOptions, false); 

不使用任何额外的插件,

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不支持它。

我们可以做的是,创建一个新的选择元素,然后附加所有选项。循环完成后,将其附加到实际的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一次!

函数:

function addtoselect(param,value){
    $('#mySelectBox').append('&lt;option value='+value+'&gt;'+param+'&lt;/option&gt;');
}

你可能想先清除你的下拉菜单 $ (' # DropDownQuality ')空虚();

我让我的控制器在MVC中返回一个只有一个项目的选择列表。

$('#DropDownQuality').append(
        $('<option></option>').val(data[0].Value).html(data[0].Text));