2016-07-12 7 views
-1

안녕하세요,이 자바 스크립트 기능을 사용하면 Chrome, Firefox에서 하단, 0 값으로 오름차순으로 항목을 정렬 할 수 있습니다. Edge, Explorer 및 Safari에서는 null 값이 바닥,하지만 수표를 써야 해. 왜 내가해야합니까, 내 기능에 문제가 있습니까?다른 브라우저의 자바 스크립트 정렬 기능

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

함께로 넣어주십시오 예상되는 결과에 대한 명확한 설명과 함께 스택 조각을 사용하여 문제 [mcve] 실행 가능. –

+1

참고 : '0'과 'null'은 같은 것이 아닙니다. –

+0

나는 0을 사용하여 끝에 오는 요소를 탐지합니다. 0을 사용하는 것과 그렇지 않은 요소를 식별하는 데 사용되는 차이점은 무엇입니까? –

답변

0

끝까지 정렬 할 때 기본값을 사용할 수 있습니다.

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

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