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

问题描述 投票:0回答:2

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

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>
jquery list sorting
2个回答
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>

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>
© www.soinside.com 2019 - 2024. All rights reserved.