javascript - 根据数据值对 S、M、L 等服装尺码进行排序

标签 javascript jquery html ecmascript-6

我正在尝试对以下 div 重新排序,以便根据其数据值将它们放置在正确的顺序 (s,m,l,xl) 中。

<div class="size-swatches">
    <div class="swatch size" data-value="m"></div>
    <div class="swatch size" data-value="s"></div>
    <div class="swatch size" data-value="xl"></div>
    <div class="swatch size" data-value="l"></div>
</div>

对于数值数据(8、10、12 等),我一直在使用以下脚本,但我不确定如何处理 s、m、l、xl

var $wrapper = $('.size-swatches');
$wrapper.find('.swatch').sort(function(a, b) {
    return +a.dataset.value - +b.dataset.value;
})
.appendTo($wrapper);

目标是像这样排列 div:

<div class="size-swatches">
    <div class="swatch size" data-value="s"></div>
    <div class="swatch size" data-value="m"></div>
    <div class="swatch size" data-value="l"></div>
    <div class="swatch size" data-value="xl"></div>
</div>

最佳答案

要实现此目的,您可以定义一个数组来存储您希望值排序的正确顺序。然后您可以创建自己的 sort() 逻辑,该逻辑比较内部值的索引该数组,如下所示:

var order = ['s', 'm', 'l', 'xl'];

var $wrapper = $('.size-swatches');
$wrapper.find('.swatch').sort(function(a, b) {
  var aSize = $(a).data('value'), bSize = $(b).data('value');
  return order.indexOf(aSize) - order.indexOf(bSize);
}).appendTo($wrapper);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="size-swatches">
  <div class="swatch size" data-value="m">M</div>
  <div class="swatch size" data-value="s">S</div>
  <div class="swatch size" data-value="xl">XL</div>
  <div class="swatch size" data-value="l">L</div>
</div>

关于javascript - 根据数据值对 S、M、L 等服装尺码进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52071722/

相关文章:

javascript - 我收到 Auth0 Node 包中无法识别的函数的错误,特别是在其 AuthenticationClient 和 ManagementClient API 中

javascript - angularJS ng-repeat过滤器不适用于动态场

javascript - 如何验证一组复选框并返回错误消息javascript

javascript - 根据用户选择获取 JSON Key

javascript - React Router 4 链接正常工作,但组件未渲染

javascript - Firefox 和本地文件

javascript - 在下拉列表中加载国家/地区

javascript - 如何为jquery函数编写函数并传递参数

javascript - 从左到右移动图像javascript

javascript - JS输出选项选择值作为链接中的获取参数