Для сортировки по нескольким атрибутам вам просто нужно поместить вторичный лог-код сортировки c на место, где совпадают два основных атрибута. Это можно сделать троично, как в следующем примере.
Также обратите внимание, что с учетом вашего HTML вывод будет 1,2,4,3
, поскольку order
элемента 4
ниже, чем это из 3
.
$(document.body).on('click', "#sortthem", function() {
$(".sortme").sort(function(a, b) {
let $a = $(a), $b = $(b);
let aStatus = $a.data('status'), bStatus = $b.data('status');
let aOrder = $a.data('order'), bOrder = $b.data('order');
return aStatus < bStatus ? -1 :
aStatus > bStatus ? 1 :
aOrder < bOrder ? -1 :
aOrder > bOrder ? 1 : 0;
}).appendTo('#mydivs');
});
<div id="mydivs">
<div class="sortme" data-status="2" data-order="2">4</div>
<div class="sortme" data-status="2" data-order="4">3</div>
<div class="sortme" data-status="1" data-order="2">2</div>
<div class="sortme" data-status="1" data-order="1">1</div>
</div>
<span class="btn btn-primary" id="sortthem">Sort them</span>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />