我当前正在使用一个下拉菜单,用户可以在其中选择一个应用程序版本(例如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
}))
提前谢谢了。
尝试将文本转换为值数组并进行比较。
这是一个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] 删除。
我来说两句