繁体   English   中英

使用data属性对元素进行升序和降序排序

[英]Sort elemenets ascending and descending with data attribute

我可以通过下面的代码升序排序

function getSorted(selector, attrName) {
    return $($(selector).toArray().sort(function(a, b){
        var aVal = parseInt(a.getAttribute(attrName)),
            bVal = parseInt(b.getAttribute(attrName));
        return aVal - bVal;
    }));
}


var sorthtml = getSorted('.instrument', 'data-sortpopular');
$(".vddl-list").html(sorthtml);

但是无法将其降序排序,我尝试了如下所示的操作

sorthtml.toArray().reverse();
$(".vddl-list").html(sorthtml);

如评论中所问:以下是示例html

<div class="vddl-list" data-sortpopular="12">
something
</div>
<div class="vddl-list" data-sortpopular="2">
something
</div>
<div class="vddl-list" data-sortpopular="3">
something
</div>

您的getSorted函数已损坏,这里有个修复程序,它将可以正常工作!

如果要升序,只需注释最后两行,否则,您将获得反向版本(降序);)

希望这可以帮助!

 function getSorted(selector, attrName) { return $(selector).toArray().sort(function(a, b){ var aVal = parseInt(a.getAttribute(attrName)), bVal = parseInt(b.getAttribute(attrName)); return aVal - bVal; }); } var sorthtml = getSorted('.instrument', 'data-sortpopular'); $(".vddl-list").html(sorthtml); sorthtml.reverse(); $(".vddl-list").html(sorthtml); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="instrument" data-sortpopular="12"> something 12 </div> <div class="instrument" data-sortpopular="2"> something 2 </div> <div class="instrument" data-sortpopular="3"> something 3 </div> <div class="vddl-list"></div> 

试试这个:您可以像下面这样创建反向函数,只是颠倒减法顺序

sorthtml = sorthtml.toArray().reverse(function(a, b){
        var aVal = parseInt(a.getAttribute('data-sortpopular')),
            bVal = parseInt(b.getAttribute('data-sortpopular'));
        return bVal - aVal;
});
$(".vddl-list").html(sorthtml);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM