开发者社区> 问答> 正文

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

我有jQuery,但不确定是否有内置的排序助手。我可以为每个项目的text,value和selected属性创建一个2D数组,但是我认为内置的javascript不能Array.sort()正常工作。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 19:07:32 517 0
1 条回答
写回答
取消 提交回答
  • 将选项提取到一个临时数组中,进行排序,然后重建列表:

    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的排序文档(特别是compareFunction)和Wikipedia的“排序算法”页面相关。

    如果要使排序不区分大小写,请替换text为text.toLowerCase()

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

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

    2020-02-10 16:06:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《零基础HTML入门教程》 立即下载
天猫 HTML5 互动技术实践 立即下载
天猫HTML5互动技术实践 立即下载