2016-12-14 8 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の1の例である:私は1,2,3を持っている場合

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

ソートが正しく動作している、しかし結果は、たとえば、二回戻ってきます、4,5戻る1,1,2,2,3,3,4,4,5,5

誰もこの問題を見たことがありますか?

+2

あなたは完全なコードをアップロードすることはできますか? –

+1

'else if 'を使ってみてください – Ted

+0

いくつかのコードで更新しました。 –

答えて

0

OK私は頭の中で自分自身を蹴っています - @ Rohan210あなたの疑惑は正しいです、私はそれにすべての.flight結果divのコピーで隠されたプレースホルダ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); 
} 
関連する問題