我在这里资助了一个非常好的排序功能 How may I sort a list alphabetically using jQuery? 例如,只有第一个charachter才能看起来像是完美无缺的 如果你有像
这样的东西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);
});
});
这是实例
欢迎任何帮助!
答案 0 :(得分:3)
我编辑了你的小提琴: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。我对||
的使用相当懒惰,但我相信你可以提出更好的条件。
答案 1 :(得分:1)
在排序之前,您需要将字符串转换为数字
var compA = parseInt($(a).text().split('-')[0]);
var compB = parseInt($(b).text().split('-')[0]);