在测试了许多解决方案后发现,没有一个是正确的排序。我需要对按分类字段分组的列表进行排序:
<div id="idx-list-ctn" class="list-ctn">
<div class="header-ctn">
<div>Fornecedores</div>
<div><img id="lst-order-by-btn" src="/Images/distance-19x19.png">Ordenar</div>
</div>
<div id="lst-19324" class="partner-ctn" data-classification="2" data-distance="2">
<div class="info-wrp lp-blc-rate-2">
<div class="info">
</div>
</div>
</div>
<div id="lst-19325" class="partner-ctn" data-classification="1" data-distance="2">
<div class="info-wrp lp-blc-rate-2">
<div class="info">
</div>
</div>
</div>
<div id="lst-19326" class="partner-ctn" data-classification="1" data-distance="2,2">
<div class="info-wrp lp-blc-rate-2">
<div class="info">
</div>
</div>
</div>
<div id="lst-19327" class="partner-ctn" data-classification="2" data-distance="1,9">
<div class="info-wrp lp-blc-rate-2">
<div class="info">
</div>
</div>
</div>
<div id="lst-19328" class="partner-ctn" data-classification="1" data-distance="0,9">
<div class="info-wrp lp-blc-rate-2">
<div class="info">
</div>
</div>
</div>
<div id="lst-19329" class="partner-ctn" data-classification="2" data-distance="1,7">
<div class="info-wrp lp-blc-rate-2">
<div class="info">
</div>
</div>
</div>
</div>
这是我到目前为止构建的函数:
$("#idx-list-ctn").find('.partner-ctn').sort(function (a, b) {
var aa = $(a).data('classification');
var bb = $(b).data('classification');
if (aa === bb) {
aa = $(a).data('distance').toString().replace(',', '.');
bb = $(b).data('distance').toString().replace(',', '.');
aa = parseFloat(aa);
bb = parseFloat(bb);
}
return aa - bb;
}).appendTo("#idx-list-ctn");
预期结果是:升序:分类:1|距离:0,9-> 2 -> 2,2 »分类:2|距离:1,7-> 1,9-> 2
降序:分类:1|距离:2,2-> 2 -> 0,9 »分类:2|距离:2 -> 1,9-> 1,7
但我得到:上升:好
降序:分类:2|距离:2 -> 1,9-> 1,7 »分类:1|距离:2,2-> 2 -> 0,9
分类组2将位于列表的顶部,但应保留在分类1组之后。
1条答案
按热度按时间chy5wohz1#
如果我对问题的理解正确的话,这应该行得通。