2016-07-12 15 views
-1

Hallo Ich habe diese Javascript-Funktion, um die Elemente in aufsteigender Reihenfolge mit Null-Wert am unteren Rand zu sortieren, in Chrome und Firefox ordnungsgemäß funktionieren, während in Edge, Explorer und Safari Null-Werte nicht an der platziert werden unten, aber ich muss einen Scheck machen. Warum sollte ich das tun? Es gibt ein Problem in meiner Funktion?Javascript Sortierfunktion in verschiedenen Browsern

var items = $('.UCSceltaCamere').find('.bloccoCamera'); 
items.sort(function (a, b) { 
     var price_a=0; 
     var price_b=0; 
     //get value only if element has availability 
     if ($(a).find(".SelezionaCamereNoDisponibilità").length == 0) { 
      price_a = Number($(a).find("[id*='priceRoomMin']").val()); 
     } 

     if ($(b).find(".SelezionaCamereNoDisponibilità").length == 0) { 
      price_b = Number($(b).find("[id*='priceRoomMin']").val()); 
     } 
     //is null 
     if(price_a===0){ 
      return 1; 
     } 
     //is null 
     if(price_b===0){ 
      if(isIE || isEdge || isSafari){ 
       return -1 
      }else{ 
       return 0; 
      } 
     } 

     return price_a-price_b; 

    }); 
$('.UCSceltaCamere').append(items); 
+0

Bitte legen Sie ein lauffähiges [MCVE] in der Frage Stapel Snippets Verwendung zusammen mit einer klaren Erklärung der erwarteten Ergebnisse. –

+1

Hinweis: "0" und "null" sind nicht dasselbe. –

+0

Ich benutze 0, um das Element zu erkennen, das am Ende gehen muss, was ist der Unterschied bei der Verwendung von 0 oder Null für die Identifizierung dieser Elemente? –

Antwort

0

Sie können einen Standardwert für die Sortierung bis zum Ende verwenden.

return (price_a || Infinity) - (price_b || Infinity); 

Togther

items.sort(function (a, b) { 
    var price_a = 0; 
    var price_b = 0; 
    //get value only if element has availability 
    if ($(a).find(".SelezionaCamereNoDisponibilità").length == 0) { 
     price_a = Number($(a).find("[id*='priceRoomMin']").val()); 
    } 

    if ($(b).find(".SelezionaCamereNoDisponibilità").length == 0) { 
     price_b = Number($(b).find("[id*='priceRoomMin']").val()); 
    } 

    return (price_a || Infinity) - (price_b || Infinity); 
}); 
Verwandte Themen