2016-12-14 24 views
-1

我在那裏的JavaScript排序是複製的結果一個非常奇怪的問題。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

有沒有人看過這個問題?

+2

您可以上傳的完整代碼? –

+1

嘗試使用'else if' – Ted

+0

更新了一些更多的代碼。 –

回答

0

好的,我正在踢自己的頭 - @ Rohan210您的懷疑是正確的,我有一個佔位符div隱藏所有.flight結果div的副本。刪除後它工作正常。 DOH。

這裏是最後的代碼,如果有人有興趣:(感謝AlexK提醒我的代碼是如何臃腫是)

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); 
}