按ID值对div数组进行排序

时间:2014-08-06 17:09:52

标签: javascript jquery

我有一个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);
}

1 个答案:

答案 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