【问题标题】:Jquery sort div based on multiple conditionsjquery根据多个条件对div进行排序
【发布时间】:2023-02-01 03:34:31
【问题描述】:

我有一小段代码可以按数字对 div 进行排序/提升。但是我想添加其他条件来排序。现在,它只是根据积分班级。但我希望它也适用条件并结合积分。

一般来说,这些 div 排序从大数到小数。如果人数相等,则显示时间较少的人。如果数量相等,它将搜索以查看哪个是最低的。它会首先显示它。

$(function(){ 
    var sortedList = $('.contest_entry').toArray().sort(function(lhs, rhs){ 
      return parseInt($(rhs).children("span.points").text(),10) - parseInt($(lhs).children("span.points").text(),10); 
   });
    $("#list").html(sortedList);
});
.contest_entry
{
  padding:10px;
  background: #eee;
  margin:10px 0px;
}

.points
{
  display:block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>

<div id="list">
<div class="contest_entry">
<span class="points">14</span>
<span class="times"> 12:39 </span>
</div> 
<div class="contest_entry">
<span class="points">16</span>
<span class="times"> 09:55 </span>
</div>
<div class="contest_entry">
<span class="points">19</span>
<span class="times"> 17:19 </span>
</div>
<div class="contest_entry">
<span class="points">19</span>
<span class="times"> 17:34 </span>
</div>
<div class="contest_entry">
<span class="points">19</span>
<span class="times"> 17:20 </span>
</div>
</div>

总之,我想添加多个条件来过滤或排序 div。

【问题讨论】:

  • 您可以在排序函数中执行任何您想要的比较逻辑。你有什么问题?
  • 我更新了您的 javascript 函数,如果对您有帮助,请将问题标记为已解决
  • @freedomn-m 在我的编辑中:我格式化了代码在我的回答中我发布了更新的 javascript 函数,对不起,但我不明白你在说什么

标签: javascript html jquery sorting


【解决方案1】:

请试试这个脚本

$(function(){ 
    var sortedList = $('.contest_entry').toArray().sort(function(lhs, rhs){ 
        var lhsPoints = parseInt($(lhs).children("span.points").text(),10);
        var rhsPoints = parseInt($(rhs).children("span.points").text(),10);
        if (lhsPoints === rhsPoints) {
            // Compare the "times" class if the "points" class is equal
            return $(lhs).children("span.times").text() > $(rhs).children("span.times").text() ? 1 : -1;
        } else {
            return rhsPoints - lhsPoints;
        }
    });
    $("#list").html(sortedList);
}); 

【讨论】:

  • 我很欣赏你的方法......如果有任何方式接受双重答案,我会接受这两个答案......Jazakallah khairan 兄弟。
  • 没有兄弟没有办法选择两个答案都可以接受
  • 而不是只是投票给我的答案:)
  • 我需要 15 个声望才能投票。但是 Insallah 当我获得 15 个声望时,我会投票支持它。
  • @Hammad 如果你赞成这个问题,OP 会得到一些代表......
【解决方案2】:

请试试这段代码

$(function(){ 
    var sortedList = $('.contest_entry').toArray().sort(function(lhs, rhs){ 
        var lhsPoints = parseInt($(lhs).find(".child span.points").text(),10);
        var rhsPoints = parseInt($(rhs).find(".child span.points").text(),10);
        if (lhsPoints === rhsPoints) {
            // Compare the "times" class if the "points" class is equal
            return $(lhs).find(".child span.times").text() > $(rhs).find(".child span.times").text() ? 1 : -1;
        } else {
            return rhsPoints - lhsPoints;
        }
    });
    $("#list").html(sortedList);
});

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    相关资源
    最近更新 更多