3

価格の ASC と DESC で div を並べ替える関数が 1 つあります。ただし、Safari では機能しません。Firefox/Chrome で問題ありません。

どういう理由ですか?

コード(およびフィドルバージョン):

  function sortByPrice(a,b){
      return $(a).find('.cicerone_price').text() > $(b).find('.cicerone_price').text();
  }

  function sortByPriceDesc(a,b){
     return $(a).find('.cicerone_price').text() < $(b).find('.cicerone_price').text();
  }

  function reorderEl(el){
      var container = $('#tabs');
      container.html('');
      el.each(function(){
          $(this).appendTo(container);
      });
  }
  $('#filter_price').change(function(){
      if ($("#filter_price option:selected").val()=='desc'){ 
          reorderEl($('.global_product').sort(sortByPriceDesc));
         } else if ($("#filter_price option:selected").val()=='asc'){ 
            reorderEl($('.global_product').sort(sortByPrice));
            }
  });
4

1 に答える 1

2

問題は解決しました。解決策として、10 進数に parseFloat を追加します。

解決策はここにあります:フィドル修正

function sortByPrice(a,b){
    return parseFloat($(a).find('.productPriceForSorting').text()) > parseFloat($(b).find('.productPriceForSorting').text()) ? 1 : -1;
}
于 2013-04-10T14:54:27.827 に答える