javascript - jQuery/JS 按字母顺序对用户列表进行分组?

标签 javascript jquery sorting

我正在显示一个用户列表。我的问题是,如何按字母顺序对它们进行排序,但按在线状态组进行排序。

基本上,我希望首先显示在线用户,其次显示离线用户,最后显示离线用户。我想按字母顺序对每个组进行排序。我的用户列表如下所示:

<ul>
   <li data-uid="x" data-status="away">John</li>
   <li data-uid="x" data-status="online">Tom</li>
   <li data-uid="x" data-status="online">Mary</li>
   <li data-uid="x" data-status="offline">Xiang</li>
   <li data-uid="x" data-status="away">Chris</li>
   <li data-uid="x" data-status="offline">Peter</li>
   <li data-uid="x" data-status="online">Matt</li>
</ul>

我希望它们像这样排序:

<ul>
   <li data-uid="x" data-status="online">Mary</li>
   <li data-uid="x" data-status="online">Matt</li>
   <li data-uid="x" data-status="online">Tom</li>
   <li data-uid="x" data-status="away">Chris</li>
   <li data-uid="x" data-status="away">John</li>
   <li data-uid="x" data-status="offline">Peter</li>
   <li data-uid="x" data-status="offline">Xiang</li>
</ul>

我尝试过使用 this答案作为我的起点,但我无法将它们分组排序..

谢谢

编辑:

此外,我正在使用 ajax 获取实时状态更新。我不确定这会如何影响该功能,但也许以后可以只针对特定用户并相应地移动他?..

最佳答案

尝试这个 jquery 代码:

var array = ["away", "online", "offline"]

$.each(array, function(key, value) {
    $('li[data-status="'+value+'"]').appendTo('ul')
});

看看这个 fiddle :http://jsfiddle.net/vRz3X/1/

关于javascript - jQuery/JS 按字母顺序对用户列表进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744889/

相关文章:

javascript - 迭代 HTMLcollection 以动态定义构造函数中的值?

javascript - 无法让 DIV 在 Javascript 监听器事件中可见

jquery - 如何使用 jquery 交替显示父子关系?

jquery - 将 div 分为两组

c# - 在 N 层应用程序中使用 DTO 时的 OrderBy

sorting - 如何按Grails中关联表中的列对结果排序?

javascript - 如何在 Javascript 中读取 JSON(服务器响应)?

javascript - 如何应用多个选择器?

javascript - 如何为 Shopify 主题创建 "smarter"色板

jquery - 提交表单时使用 SELECT 中的文本而不是值