【发布时间】:2010-10-27 14:19:24
【问题描述】:
我找到了以下解决方案来为 jQuery 添加排序功能(参考:jQuery sort())。我已经改变了对未知长度的字符串进行排序的解决方案。它工作得很好,但是正如您可能从函数名称中注意到的那样:它按升序排序:-)。
jQuery.fn.sort = function() {
return this.pushStack( [].sort.apply( this, arguments ), []);
};
function sortStringAscending(a,b){
var h1 = a.innerHTML;
var h2 = b.innerHTML;
var c = 0;
var str1 = null,
var str2 = null;
while(str1 == str2 && (c < h1.length && c < h2.length)) {
str1 = h1.substring(c,c+1).toLowerCase().charCodeAt(0);
str2 = h2.substring(c,c+1).toLowerCase().charCodeAt(0);
if(str1 > str2) {
r = 1;
} else if(str2 > str1) {
r = -1;
}
c += 1;
}
return r;
};
函数是这样使用的:
$('ol li').sort(sortStringAscending).appendTo('ol');
是否可以更改此代码以使以下成为可能?
$('ol li').sort(sortString, 0).appendTo('ol'); //0 for descending
$('ol li').sort(sortString, 1).appendTo('ol'); //1 for ascending
【问题讨论】:
标签: javascript jquery arrays sorting