按匹配数据 ID 分组并按另一个数据属性排序
Group by matching data id and order by another data attribute
是否可以通过匹配 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>
使用这个脚本
$("#parentID div.child").sort(function(a, b) {
return $(a).data("id") - $(b).data("id");
}).appendTo("#parentID");
您可以根据 id
和 orderby
属性对 div
进行排序。
$(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>
是否可以通过匹配 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>
使用这个脚本
$("#parentID div.child").sort(function(a, b) {
return $(a).data("id") - $(b).data("id");
}).appendTo("#parentID");
您可以根据 id
和 orderby
属性对 div
进行排序。
$(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>