Javascript 可以用$.each(..)填充;“销毁”;我的地图在IE中的排序?

Javascript 可以用$.each(..)填充;“销毁”;我的地图在IE中的排序?,javascript,jquery,ajax,foreach,Javascript,Jquery,Ajax,Foreach,我的问题: 我知道这听起来可能很有趣,但我的问题是:我有一个select,它在成功时通过Ajax以以下方式填充: $.each(data, function(key, value) { options += '<option value="' + key + '">' + value + '</option>'; }); 在IE中是如何实现的: <option value="2">B</option> &l

我的问题:

我知道这听起来可能很有趣,但我的问题是:我有一个
select
,它在成功时通过Ajax以以下方式填充:

$.each(data, function(key, value) {
            options += '<option value="' + key + '">' + value + '</option>';
        });
在IE中是如何实现的:

<option value="2">B</option>
<option value="13">A</option>
<option value="55">C</option>
B
A.
C

您的问题是对象实际上没有键/值对的特定顺序。改变它没有错。使用数组来保存这些对,类似于:

[
    {
        "value": "13",
        "text": "A"
    },
    {
        "value": "2",
        "text": "B"
    },
    {
        "value": "55",
        "text": "C"
    }
]
并按如下方式循环:

$.each(data, function(index, option) {
    options += '<option value="' + option.value + '">' + option.text + '</option>';
});
minitech的说法是正确的

无论假定顺序将保留在对象中是多么好,它都不能保证,并且可能在任意时间(或在IE中,始终)中断

但是,另一个解决方案是传递一个排序数组,该数组具有您希望遍历键的顺序

[
  {
    13: 'A',
    2: 'B',
    55: 'C'
  },
  [ 13, 2, 55 ]
 ]

请不要通过附加HTML来创建元素。jQuery有非常好的DOM操作工具。我已经更改了服务器端以创建一个对数组,并将其传递给ajax调用,现在它工作正常。非常感谢。
$.each(data, function(index, option) {
    options.append(
        $('<option>').prop('value', option.value).text(option.text)
    );
});
[
  {
    13: 'A',
    2: 'B',
    55: 'C'
  },
  [ 13, 2, 55 ]
 ]