服务器从查询中返回以下响应:
{ ROM: "Romania",
YUG: "Yugoslavia",
PRT: "Portugal",
MKD: "Macedonia",
GRC: "Greece",
FRA: "France",
ISL: "Iceland",
LUX: "Luxembourg",
HUN: "Hungary",
GBR: "United Kingdom", 36 more… }
我需要将这些放入已经存在的选择中,如下所示:
$.each(result, function(key, value) {
$('#country')
.append($("<option></option>")
.attr("value",key)
.text(value));
});
有人可以告诉我如何在将数据插入html元素之前按字母顺序对各国进行排序吗?
答案 0 :(得分:1)
function OrderListBy(prop) {
return function (a, b) {
if (a[prop] > b[prop]) {
return 1;
}
else if (a[prop] < b[prop]) {
return -1;
}
return 0;
}
}
调用此函数:按名称排序 -
YourArray.sort( OrderListBy("name") );
答案 1 :(得分:0)
var array = [item1, item2];
array.sort();
答案 2 :(得分:0)
您不能对对象进行排序,但可以对数组进行排序,因此您可以创建一个HTMLOptionElement
个对象数组并对其进行排序,然后将其附加到select元素。
$('#country').append(function() {
return $.map(result, function (key, value) {
return new Option(key, value);
}).sort(function (a, b) {
return a.text.localeCompare(b.text);
});
});
答案 3 :(得分:0)
您可以对返回的JSON进行排序,我假设结果是您返回的JSON 。 种类
Object.keys(result).sort().reduce(function (a, b) { a[b] = result[b]; return a; }, {});
这将对对象进行排序。要对输入进行排序:
$("#country").html(function () { return $(this).find('option').sort(function(a,b){ return a.value-b.value }); });
将$("#country")
替换为您的选择名称。
这将添加sortArray
函数
$.fn.sortSelect=function(){this.html(function(){ return $(this).find('option').sort(function(a,b){return a.value-b.value});});}
然后你可以做
$('#country').sortSelect()