我在这里资助了一个非常好的排序功能 How may I sort a list alphabetically using jQuery? 例如,除了看起来仅按第一个字符排序之外,它的工作几乎完美 如果你有类似的东西
0-5000
5001-10000
10001-15000
15001-20000
订单看起来像
0-5000
10001-15000
15001-20000
5001-10000
相反
0-5000
5001-10000
10001-15000
15001-20000
我为表单中的每个选择重新编写了函数
var mylist = $('#myformid select');
$(mylist).each(function (sorter, elm) {
var listitems = $(this).children('option.myoptionclass').get();
listitems.sort(function(a, b) {
var compA = $(a).text().toUpperCase();
var compB = $(b).text().toUpperCase();
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
})
$.each(listitems, function(idx, itm) {
$(this).parent().append(itm);
});
});
这是一个实例
欢迎任何帮助!
最佳答案
我编辑了你的 fiddle :http://jsfiddle.net/CBD33/2/
我正在使用 parseInt
所以现在的比较如下所示:
listitems.sort(function(a, b) {
var compA = $(a).text().toUpperCase();
var compB = $(b).text().toUpperCase();
compA = (parseInt(compA,10) || compA)
compB = (parseInt(compB,10) || compB)
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
})
如果提供给 parseInt
的字符串值的第一个字符是数字,它将解析直到第一个非数字字符的所有内容。如果第一个字符不是数字,则返回 NaN。我对 ||
的使用相当懒惰,但我相信你可以想出更好的条件。
关于jquery - 使用 jquery 对选择选项进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497261/