0

だから私はドロップダウンをアルファベット順に並べ替えています:

$(".product-actions select").each(function() {   
// Sort all the options by text. I could easily sort these by val.
$(this).html($("option", $(this)).sort(function(a, b) {
    return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
}));

});

product-class 要素には、2 種類のドロップダウンを含めることができます。色を表示するものとサイズを表示するもの。この並べ替えは、色に対して完全に機能します。ただし、サイズでは、衣服のサイズと靴のサイズは考慮していません. 靴のサイズをアルファベット順に並べるのはいいのですが、洋服の場合は小さいサイズから大きいサイズまで表示したいのですが、それが問題になります。

サイズ ドロップダウンは次のように表示されます。

<select class="size" data-option-key="size" data-priority="0">
  <option value="color" selected="selected">size</option>
  <option value="05"><span>05 - $198.00</span></option>
  <option value="06"><span>06 - $198.00</span></option><option value="06.5">
</select>

衣類(サイズはXS、S、M、L、XL)

<select class="size" data-option-key="size" data-priority="0">
  <option value="color" selected="selected">size</option>
  <option value="L(14-16)"><span>L(14-16) - $158.00</span></option>
  <option value="M(10-12)"><span>M(10-12) - $158.00</span></option>
  <option value="S(6-8)"><span>S(6-8) - $158.00</span></option>
  <option value="XL(18)"><span>XL(18) - $158.00</span></option>
  <option value="XS(2-4)"><span>XS(2-4) - $158.00</span></option>
</select>

私はこれら2つの異なる方法を理解しようとしています。この並べ替えの処理方法について誰かアドバイスをもらえますか?

**注 - 靴のドロップダウンでは、その価格はサイズの後に追加されています.

ありがとうございました!

4

1 に答える 1

0

JSON オブジェクトを使用して、それを比較関数に使用できます。それは静かでシンプルです:

var shirtSizes = { "XS" : "0", "S" : "1", "M" : "2", "L" : "3", "XL" : "4"}

次に、オブジェクトの値を検索しながら比較関数を使用します。

return shirtSizes[a.text] == shirtSizes[b.text] ? 0 : shirtSizes[a.text] < shirtSizes[b.text] ? -1 : 1
于 2013-05-20T15:42:50.917 に答える