从排序列表的第一个元素中获取价值

时间:2019-03-01 09:27:19

标签: jquery list sorting

我已经对列表进行了排序,排序之后,我需要获取该列表中第一个元素的值。到目前为止,我已经尝试过这种方式,但是我只会遇到一个错误:

let albumList = "";

albumList = $(".album:visible");
albumList.sort(function (a, b) { return $(a).data("totalprice") - $(b).data("totalprice") });

console.log(albumList[0].data("totalprice"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="album" data-totalprice="170.00"></div>
<div class="album" data-totalprice="200.00"></div>
<div class="album" data-totalprice="150.00"></div>
<div class="album" data-totalprice="100.00"></div>

2 个答案:

答案 0 :(得分:2)

简单而纯净的JavaScript方法。 querySelectorAll返回一个NodeList对象,因此我们首先需要创建一个数组,然后按元素的data属性对其进行排序。

const albumList = Array.from(document.querySelectorAll('.album')).sort((a, b) => {
    return a.dataset.totalprice - b.dataset.totalprice;
})

console.log(albumList[0].dataset.totalprice)
<div class="album" data-totalprice="170.00"></div>
<div class="album" data-totalprice="200.00"></div>
<div class="album" data-totalprice="150.00"></div>
<div class="album" data-totalprice="100.00"></div>

答案 1 :(得分:1)

由于.data()是一个jquery函数,因此请albumList[0]一个jquery对象来使用它

$(albumList[0])

let albumList = "";
albumList = $(".album:visible");
albumList.sort(function(a, b) {
  return $(a).data("totalprice") - $(b).data("totalprice")
});
console.log($(albumList[0]).data("totalprice"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="album" data-totalprice="170.00"></div>
<div class="album" data-totalprice="200.00"></div>
<div class="album" data-totalprice="150.00"></div>
<div class="album" data-totalprice="100.00"></div>