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 元素可以包含两种类型的下拉菜单。一种显示颜色,另一种显示尺寸。这种类型非常适合颜色。然而,在尺码上,我没有考虑服装尺码和鞋子尺码。按字母顺序排列鞋子尺寸很棒,但是对于衣服,我希望它从最小尺寸显示到最大尺寸,这成为一个问题。

以下是尺寸下拉菜单的显示方式:

<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>

我试图弄清楚如何以不同的方式处理这两个问题。谁能给我一些关于如何处理这种排序的建议?

**注意 - 在鞋子下拉列表中,该价格是在尺码之后添加的。

谢谢!

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 回答