Javascript 用小数正确排序HTML下拉菜单
我目前正在使用一个下拉菜单,用户可以在其中选择一个应用程序版本,例如1.0.4.3-0001,以获取有关此特定版本的更多信息。为了让用户更快地找到正确的版本,我想对这个下拉菜单进行排序,以便最新版本位于顶部,最低版本1.0.0.0-0001位于底部。因为所有版本都是从服务器获取的,而且每天都会出现新版本,所以我无法手动对它们进行排序 我尝试了各种jQuery和JavaScript代码对其进行正确排序,但没有一种代码能够像应用程序版本那样使用小数,因为它认为1.0.2.0比1.0.12.0更新。有人知道如何处理这样一个特定的案例吗 以防有人想看到我迄今为止尝试过的代码,而“版本”是我的下拉列表:Javascript 用小数正确排序HTML下拉菜单,javascript,jquery,html,Javascript,Jquery,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
}))
非常感谢。尝试将文本转换为一个值数组,并进行比较 这是一个例子 其内容如下: 身体 初始化javascript
底部的每一个都与.sort结果相反。Hm,这里发布的所有代码片段只是比较两个特定版本,而不是按正确的方式排序…@sorter这就是sort函数所做的,将a与bI进行比较。为了对某个内容进行排序,您必须比较某个内容。但我不知道如何继续比较两个特定版本的代码片段。你知道吗很抱歉,我不得不推这个话题,但我网站上的某些内容已经改变。PHP不再加载select选项,现在它们通过jQuery和.appendTo插入。不幸的是,您的脚本似乎无法使用jQuery插入选项,您知道如何解决这个问题吗我自己刚找到解决办法。问题不在于选择选项是由jQuery插入的,我只是在让jQuery插入选项后尝试过快地对其进行排序。因此,我只需在大约250ms后调用函数对版本进行排序,效果很好。
<select>
<option>1.0.2.0</option>
<option>1.0.12.0</option>
<option>0.1.2.3</option>
</select>
$('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)});