Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript排序正在复制结果_Javascript_Jquery - Fatal编程技术网

JavaScript排序正在复制结果

JavaScript排序正在复制结果,javascript,jquery,Javascript,Jquery,我有一个非常奇怪的问题,JavaScript排序复制了结果 我根据用户的选择,根据数据属性对一组div进行排序。我应该注意到,有问题的div是使用ajax预先拉入容器的 //sort flights function sortFlights(sortBy) { var flightDivs = $(".flight-result"); if(sortBy == "journey") { var sortedFlights = flightDivs.sort(f

我有一个非常奇怪的问题,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


以前有人见过这个问题吗?

好吧,我在自责-@Rohan210你的怀疑是对的,我有一个占位符div,里面藏着所有的.flight result div的副本。拆下后,它工作正常。DOH

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


你能上传完整的代码吗?尝试使用
else if
为什么不使用else if或者switch?
sortBy
在函数中的任何点都不会改变,所以
else if
或者
switch
不会有任何区别。在任何情况下,您都必须展示一个复制问题的完整示例。@OwainReed它在中运行良好。
    function sortFlights(sortBy) {

    var flightDivs = $("#flights-results .flight-result");
    flightDivArray = $.makeArray(flightDivs);

    var sortedFlights = flightDivArray.sort(function(a, b){
        return $(a).data(sortBy)-$(b).data(sortBy);
    });

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