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 ]
]