我有一个div列表,我想按ID值排序。问题是ID是这样的值:“indexNumber123”。
我想在“indexNumber1”,“indexNumber2”,“indexNumber3”中按“数字”对它们进行排序,以便在显示HTML之前对它们进行重新排序。
这个应用程序的代码库是一个草率的混乱,所以我想我可以通过使用jquery进行DOM操作来实现这一点,并且完成它。
我尝试通过获取div的数组然后将compare函数传递给数组的sort方法来做到这一点。我以为我可以在比较方法中解析ID值并比较数值,但这不是正确排序。
function compare(a,b) {
var aId = parseInt(a.id.replace( /^\D+/g, ''));
var bId = parseInt(b.id.replace( /^\D+/g, ''));
if (aId < bId)
return -1;
if (aId > bId)
return 1;
return 0;
}
//fired on a button click
function sortNumeric() {
var arrDivs = [];
$('[id^="indexNumber"]').each(
function() {
arrDivs.push($(this)[0]);
});
var sortedDivs = arrDivs.sort(compare);
console.dir(sortedDivs);
}
答案 0 :(得分:1)
function compare(a,b) {
var aId = parseInt(a.id.replace( /^\D+/g, ''));
var bId = parseInt(b.id.replace( /^\D+/g, ''));
return +aId - +bId
}
//fired on a button click
function sortNumeric() {
var arrDivs = $('[id^="indexNumber"]'),
sortedDivs = arrDivs.sort(compare);
console.dir(sortedDivs);
}
试试这个。您可能需要将“stringID”转换为NumberID