正确排序带有小数的HTML下拉菜单

巫师

我当前正在使用一个下拉菜单,用户可以在其中选择一个应用程序版本(例如1.0.4.3-0001)以获取有关该特定版本的更多信息。为了让用户更快地找到正确的版本,我想对下拉菜单进行排序,以使最新版本位于顶部,最低版本(1.0.0.0-0001)位于底部。因为所有版本都是从服务器获取的,并且每天都会出现新版本,所以我无法手动对其进行排序。

我尝试了各种jQuery和JavaScript代码对它进行正确排序,但是似乎没有任何代码可以像应用程序版本那样使用小数(因为它认为1.0.2.0比例如更新1.0.12.0)。有谁知道如何处理这种特殊情况?

万一有人想看到我到目前为止尝试过的代码(以“版本”为我的下拉列表):

$("#version").html($("#version option").sort(function (a, b) {
    return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
}))

提前谢谢了。

ca2longoria

尝试将文本转换为值数组并进行比较。

这是一个jsfiddle

因此,其内容为:

身体

<select>
    <option>1.0.2.0</option>
    <option>1.0.12.0</option>
    <option>0.1.2.3</option>
</select>

初始化javascript

$('select option').sort(
    function (compA,compB)
    {
        var a = compA.text.split(/[.-]/).map(function(x){return parseFloat(x)});
        var b = compB.text.split(/[.-]/).map(function(x){return parseFloat(x)});

        var i;
        for (i=0; i < a.length && i < b.length; ++i)
        {
            if (a[i] < b[i])
                return -1;
            else if (a[i] > b[i])
                return 1;
        }

        if (a.length != b.length)
        {
            if (i == a.length)
                return -1;
            if (i == b.length)
                return 1;
        }

        return 0;
    })
.each(function(i,a){$('select').prepend(a)});

.each在底部反转的.sort结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章