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