I have jQuery but I'm not sure if it has any built-in sorting helpers. I could make a 2d array of each item's text, value, and selected properties, but I don't think that javascript's built in Array.sort() would work correctly.

推荐答案

将选项提取到临时数组中,排序,然后重建列表:

var my_options = $("#my_select option");
var selected = $("#my_select").val();

my_options.sort(function(a,b) {
    if (a.text > b.text) return 1;
    if (a.text < b.text) return -1;
    return 0
})

$("#my_select").empty().append( my_options );
$("#my_select").val(selected);

Mozilla's sort documentation (specifically the compareFunction) and Wikipedia's Sorting 算法rithm page are relevant.

If you want to make the sort case insensitive, replace text with text.toLowerCase()

上面显示的排序函数说明了如何排序.准确地对非英语语言进行排序可能很复杂(请参见unicode collation algorithm).在排序函数中使用localeCompare是一个很好的解决方案,例如:

my_options.sort(function(a,b) {
    return a.text.localeCompare(b.text);
});

Jquery相关问答推荐

当一个很长的活动增加标题时,满历js每周都会出现.这是一种让标题只出现一次的方法吗?

formData.append 来自不同输入文件的两个文件

jQuery找到最近的匹配元素

使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为jsonp的 $.ajax)错误?

如何判断输入日期是否等于今天的日期?

如何使用jQuery找到元素顶部的垂直距离(以px为单位)

jQuery/JavaScript 碰撞检测

window.onbeforeunload 和 window.onunload 在 Firefox、Safari、Opera 中不起作用?

调整浏览器大小时调整jqGrid的大小?

jQuery getJSON 将结果保存到变量中

动画元素变换旋转

jQuery .live() 和 .on() 有什么区别

验证外部脚本是否已加载

如何在 jquery 中更新(附加到)href?

使用 jQuery 拖放防止单击事件

我想了解 jQuery 插件语法

使用 AJAX 加载 Bootstrap 弹出内容.这可能吗?

计算文本宽度

你能在不影响历史的情况下使用哈希导航吗?

如何让 jQuery 等到效果完成?