首页 > 解决方案 > 如何使用js正确排序项目

问题描述

我搜索了与此类似的问题,但这些问题并没有解决我的问题。我有一张显示物品的引导卡。而且我有一个过滤器可以通过喜欢的投票来订购这张卡片,但是当我触发 js 功能时,排序效果不佳(看起来它是以随机方式排序)。

html:

 <a class="like badge" onclick="vote('{% url 'like_item' pk=item.pk %}', '.liked_item_{{item.id}}', '.disliked_item_{{item.id}}', '.like_{{item.id}}', '.dislike_{{item.id}}')" href="javascript:void(0)">
        <span class="liked_item_{{item.id}} liked_votes">
          {{ item.count_likes }}
        </span>
      </a>

js:

if(this.name == 'thumbsUp'){
    var thumbsUpOrderedDivs = $divs.sort(function (a, b) {
        return $(a).find('.liked_votes').text() < $(b).find('.liked_votes').text();
    });
    $("#idea-list-group").html(thumbsUpOrderedDivs);
}

标签: javascriptjquery

解决方案


你应该使用String.prototype.localeCompare()

localCompare:localeCompare() 方法返回一个数字,指示引用字符串是在排序顺序之前还是之后还是与给定字符串相同

if(this.name == 'thumbsUp'){
    var thumbsUpOrderedDivs = $divs.sort(function (a, b) {
        return ($(a).find('.liked_votes').text() + '').localeCompare($(b).find('.liked_votes').text());
    });
    $("#idea-list-group").html(thumbsUpOrderedDivs);
}

推荐阅读