javascript排序函数有问题。
以下函数按数据价格属性降序对包装器中的项进行排序。
HTML部分:

<div class="wrapper">
    <div class="item" data-price="1"></div>
    <div class="item" data-price="2"class="blacklisted"></div>
    <div class="item" data-price="3"></div>
    <div class="item" data-price="4" class="blacklisted"></div>
</div>

JQuery部分:
    var $wrapper = $('.wrapper');
    $wrapper.find('.item').sort(function (a, b) {
        return -a.getAttribute('data-price') - -b.getAttribute('data-price');
    }).appendTo($wrapper);

现在我想改为JQuery部分,它按数据价格排序
电流响应
<div class="wrapper">
    <div class="item" data-price="4" class="blacklisted"></div>
    <div class="item" data-price="3"></div>
    <div class="item" data-price="2"class="blacklisted"></div>
    <div class="item" data-price="1"></div>
</div>

希望回复:
<div class="wrapper">
    <div class="item" data-price="3"></div>
    <div class="item" data-price="1"></div>
    <div class="item" data-price="4" class="blacklisted"></div>
    <div class="item" data-price="2" class="blacklisted"></div>
</div>

最佳答案

元素不应具有两个class属性。您可以链接.filter(".blacklisted")然后调用.appendTo()

var $wrapper = $('.wrapper');
$wrapper.find('.item').sort(function(a, b) {
  return +a.getAttribute('data-price') > +b.getAttribute('data-price') ? -1 : 1;
})
.appendTo($wrapper)
.filter(".blacklisted")
.appendTo($wrapper);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<div class="wrapper">
  <div class="item" data-price="1">price</div>
  <div class="item blacklisted" data-price="2">blacklisted</div>
  <div class="item" data-price="3">price</div>
  <div class="item blacklisted" data-price="4">blacklisted</div>
</div>

07-25 21:51