javascript - 按值对 Html Select 的选项进行排序的最有效方法是什么,同时保留当前选定的项目?

标签 javascript jquery arrays sorting html-select

我有 jQuery,但我不确定它是否有任何内置的排序助手。我可以为每个项目的 textvalueselected 属性制作一个二维数组,但我不认为 javascript 内置于 Array.sort() 会正常工作。

最佳答案

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

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 (特别是 compareFunction)和 Wikipedia's Sorting Algorithm page是相关的。

如果您想让排序不区分大小写,请将 text 替换为 text.toLowerCase()

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

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

关于javascript - 按值对 Html Select 的选项进行排序的最有效方法是什么,同时保留当前选定的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888/

相关文章:

Javascript 函数绑定(bind)覆盖(如何将其绑定(bind)到另一个对象)

javascript - 数据表以编程方式应用过滤器

javascript - 我无法有选择地在元素上运行我的函数

php - 如何使用分隔列和值的数组生成查询

javascript - 在 JavaScript 中模拟来自 Gameboy ROM 的音频

javascript - BootStrap 模态不想关闭

javascript - 我可以将 javascript 绘制函数更改为图像吗?

jquery - 如何对特定DIV使用blockUI?

javascript - 如果测试[未定义]

php - 如果子键存在则求和多维数组