Javascript 使用jQuery向select添加选项-更改顺序

Javascript 使用jQuery向select添加选项-更改顺序,javascript,jquery,Javascript,Jquery,我编写了以下代码来填充Jquery中的列表框(基于) 但是,列表是按照ID的顺序排列的,即。 我如何调整我的填充函数,以便按照列出它们的顺序对它们进行排序?(显然我可以重新分配ID,但我想知道是否有其他解决方案)更改.append()到.prepend(): $。每个(选择值、函数(键、值){ $(id).prepend($(“”).attr(“值”,键) .prop('selected',key==theSelected).text(值)); }); 更改.append()到.prepen

我编写了以下代码来填充Jquery中的列表框(基于)

但是,列表是按照ID的顺序排列的,即。

我如何调整我的填充函数,以便按照列出它们的顺序对它们进行排序?(显然我可以重新分配ID,但我想知道是否有其他解决方案)

更改
.append()
.prepend()

$。每个(选择值、函数(键、值){
$(id).prepend($(“”).attr(“值”,键)
.prop('selected',key==theSelected).text(值));
});
更改
.append()
.prepend()

$。每个(选择值、函数(键、值){
$(id).prepend($(“”).attr(“值”,键)
.prop('selected',key==theSelected).text(值));
});

问题在于,你不能依赖对象属性的顺序,根本没有对象属性的顺序。而是使用对象数组

改进后的代码如下所示:

函数填充(id、selectValues、Selected、empty){
if(空){
$(id).empty();
}
$.each(选择值、函数(i、obj){
$(id).append($(“”)attr(“value”,obj.id)
.prop('selected',obj.id==theSelected).text(obj.text));
});
}
var-selectedBase=3;
填充(“#BASE1”[
{id:“8”,文本:“2012年平均值=100”},
{id:“7”,文本:“2010年平均值=100”},
{id:“6”,正文:“2008年平均数=100”},
{id:“5”,文本:“2006年平均数=100”},
{id:“4”,案文:“2002年平均数=100”},
{id:“3”,文本:“2000年平均数=100”},
{id:“2”,案文:“1998年平均数=100”},
{id:“1”,案文:“1993年平均数=100”}
],selectedBase,true)

问题在于,您不能依赖对象属性的顺序,根本没有对象属性的顺序。而是使用对象数组

改进后的代码如下所示:

函数填充(id、selectValues、Selected、empty){
if(空){
$(id).empty();
}
$.each(选择值、函数(i、obj){
$(id).append($(“”)attr(“value”,obj.id)
.prop('selected',obj.id==theSelected).text(obj.text));
});
}
var-selectedBase=3;
填充(“#BASE1”[
{id:“8”,文本:“2012年平均值=100”},
{id:“7”,文本:“2010年平均值=100”},
{id:“6”,正文:“2008年平均数=100”},
{id:“5”,文本:“2006年平均数=100”},
{id:“4”,案文:“2002年平均数=100”},
{id:“3”,文本:“2000年平均数=100”},
{id:“2”,案文:“1998年平均数=100”},
{id:“1”,案文:“1993年平均数=100”}
],selectedBase,true)


谢谢!顺便说一句,我假设我应该删除
.find('.test')
,但是出现了一个错误
对象不支持属性或方法“appendTo”
。@gordon613:很高兴它有帮助:)谢谢!顺便说一句,我假设我应该删除
.find('.test')
,但是有一个错误
对象不支持属性或方法“appendTo”
…@gordon613:很高兴它有帮助:)
function populate(id, selectValues, theSelected, empty) {
    if (empty) {
        $(id).empty();
    }
    $.each(selectValues, function(key, value) {
        $(id).append($("<option></option>").attr("value", key)
             .prop('selected', key == theSelected).text(value));
    });
}
populate('#BASE1', {
    "8": "2012 average=100",
    "7": "2010 average=100",
    "6": "2008 average=100",
    "5": "2006 average=100",
    "4": "2002 average=100",
    "3": "2000 average=100",
    "2": "1998 average=100",
    "1": "1993 average=100"
}, selectedBase, true);
$.each(selectValues, function(key, value) {
    $(id).prepend($("<option></option>").attr("value", key)
         .prop('selected', key == theSelected).text(value));
});