按数据属性WITHOUT Jquery的数值对元素进行排序

时间:2014-11-12 10:33:03

标签: javascript sorting

我如何将此代码转换为常规javascript?

    function sortList(listName,dataName){
    var $people = $(listName);

    $peopleli = $people.children('.leader-mobile');
    $peopleli.sort(function(a,b){
        console.log(b);
        var an = a.getAttribute(dataName),
        bn = b.getAttribute(dataName);
        if(an < bn) {
            return 1;
        }
        if(an > bn) {
            return -1;
        }
        return 0;
    });
    $peopleli.detach().appendTo($people);
}

用得像

 sortList($('#myList'),'data-close');

我试图根据数据属性对列表进行排序,我不能使用jQuery。

我受jqMobi框架使用jquery的限制,jqMobi框架只具有最小的jquery兼容性。

我想在找到让jqMobi和Jquery一起玩的方法之前。 我想我会先学习如何在纯JavaScript中实际操作

1 个答案:

答案 0 :(得分:0)

我最终解决了这个......通过先排序对象然后将排序的对象应用到DOM,而不是从DOM中获取元素并在放置后对它们进行排序。工作得更好更快

   var sort_by = function(field, reverse, primer){
       var key = primer ? 
           function(x) {return primer(x[field])} : 
           function(x) {return x[field]};

       reverse = [-1, 1][+!!reverse];

       return function (a, b) {
           return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
         } 
    }

    salesSort.sort(sort_by('sales',false,parseInt));
    unitSort.sort(sort_by('units',false,parseInt));
    closeSort.sort(sort_by('close',false,parseInt));