微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按匹配的数据 id 分组并按另一个数据属性排序

如何解决按匹配的数据 id 分组并按另一个数据属性排序

是否可以通过匹配 data-id 将多个 div 分组并通过另一个数据属性对其进行排序。这可以用 underscorejs 或普通的 javascript 来完成吗?

当前 div 布局期望的输出

    <div id="parentID">
      <div data-id="71" data-orderby="2" class="child">ID: 71 Order 2</div>
      <div data-id="71" data-orderby="3" class="child">ID: 71 Order 3</div>
      <div data-id="71" data-orderby="1" class="child">ID: 71 Order 1</div>
      <div data-id="62" data-orderby="2" class="child">ID: 62 Order 2</div>
      <div data-id="62" data-orderby="1" class="child">ID: 62 Order 1</div>
      <div data-id="59" data-orderby="1" class="child">ID: 59 Order 1</div>
      <div data-id="59" data-orderby="3" class="child">ID: 59 Order 3</div>
      <div data-id="59" data-orderby="2" class="child">ID: 59 Order 2</div>
    </div>

    <div id="parentID">
      <div data-id="71" data-orderby="1" class="child">ID: 71 Order 1</div>
      <div data-id="71" data-orderby="2" class="child">ID: 71 Order 2</div>
      <div data-id="71" data-orderby="3" class="child">ID: 71 Order 3</div>
      <div data-id="62" data-orderby="1" class="child">ID: 62 Order 1</div>
      <div data-id="62" data-orderby="2" class="child">ID: 62 Order 2</div>
      <div data-id="59" data-orderby="1" class="child">ID: 59 Order 1</div>
      <div data-id="59" data-orderby="2" class="child">ID: 59 Order 2</div>
      <div data-id="59" data-orderby="3" class="child">ID: 59 Order 3</div>
    </div>

解决方法

您可以根据 divid 属性对 orderby 进行排序。

$(function() {
  $("#parentID div").sort((a,b) => {
      return $(b).data('id') - $(a).data('id') || $(a).data('orderby') - $(b).data('orderby');
  }).appendTo('#parentID');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parentID">
  <div data-id="71" data-orderby="2" class="child">ID: 71 Order 2</div>
  <div data-id="71" data-orderby="3" class="child">ID: 71 Order 3</div>
  <div data-id="71" data-orderby="1" class="child">ID: 71 Order 1</div>
  <div data-id="62" data-orderby="2" class="child">ID: 62 Order 2</div>
  <div data-id="62" data-orderby="1" class="child">ID: 62 Order 1</div>
  <div data-id="59" data-orderby="1" class="child">ID: 59 Order 1</div>
  <div data-id="59" data-orderby="3" class="child">ID: 59 Order 3</div>
  <div data-id="59" data-orderby="2" class="child">ID: 59 Order 2</div>
</div>

,

使用这个脚本

$("#parentID div.child").sort(function(a,b) {
  return $(a).data("id") - $(b).data("id");
}).appendTo("#parentID");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。