JavaScript排序是重复结果

时间:2016-12-14 14:55:32

标签: javascript jquery

我有一个非常奇怪的问题,即JavaScript排序会重复结果。

我根据用户的选择根据数据属性对一堆div进行排序。我应该注意到有问题的div事先用ajax拉入他们的容器。

//sort flights
function sortFlights(sortBy) {

    var flightDivs = $(".flight-result");

    if(sortBy == "journey") {
        var sortedFlights = flightDivs.sort(function(a, b){
            return $(a).data("journey")-$(b).data("journey");
        });
    }
    else if(sortBy == "depart") {
        var sortedFlights = flightDivs.sort(function(a, b){
            return $(a).data("departure")-$(b).data("departure");
        });
    }
    else if(sortBy == "arrive") {
        var sortedFlights = flightDivs.sort(function(a, b){
            return $(a).data("arrival")-$(b).data("arrival");
        });
    }
    else {
        var sortedFlights = flightDivs.sort(function(a, b){
            return $(a).data("price")-$(b).data("price");
        });
    }

    $(".flight-result").remove();
    $("#flights-results").append(sortedFlights);
}

以下是我正在排序的一个div的示例:

    <div class="flight-result" data-price="127.02" 
data-departure="20161214115500" data-arrival="20161214160000" 
data-stops="0" data-journey="000305"></div>

排序正常,但结果会回来两次,例如,如果我有1,2,3,4,5它返回1,1,2,2,3,3,4,4,5 ,5

之前有没有人见过这个问题?

1 个答案:

答案 0 :(得分:0)

好的我正在踢自己 - @ Rohan210你的怀疑是正确的,我有一个占位符div隐藏着所有.flight-result div的副本。删除后它正常工作。 DOH。

如果有人感兴趣,这是最终的代码:(感谢AlexK提醒我代码是多么臃肿)

mask