javascript - 使用数据属性对元素进行升序和降序排序

标签 javascript jquery

我可以通过下面的代码对其进行升序排序

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>

关于javascript - 使用数据属性对元素进行升序和降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51494063/

相关文章:

javascript - 如何在 jQuery UI Selectmenu 中触发 'select' 事件

javascript - 使用ajax请求下载图像

javascript - JSON 对象到 Javascript 对象

jquery - Django - clean() 具有隐藏形式

JQuery .在按回车键时在文本区域中附加换行符

javascript - 从类似 csv 的字符串设置文本字段值

javascript - 语法错误: Unexpected token { when loading node module during jest test

javascript - 动态对象定义

javascript - 我可以对 Fetch API 响应使用 DOM 查询方法吗?

java - 单击链接时调用函数