使用 jquery 在属性中查找最小值和最大值
find minimum and maximum value in attribute using jquery
我需要在数据属性中找到最小值和最大值,但是 returns 0
这是我的代码
<div data-price="2" class="maindiv">test</div>
<div data-price="5" class="maindiv">test</div>
<div data-price="3" class="maindiv">test</div>
<div data-price="0" class="maindiv">test</div>
<div data-price="25" class="maindiv">test</div>
<div data-price="10" class="maindiv">test</div>
<script>
var ids = $("div[data-price]").map(function() {
return this.id;
}).get();
var highest = Math.max.apply( Math, ids );
var lowest = Math.min.apply( Math, ids );
alert(highest);
alert(lowest);
</script>
目前您正在从 map
函数返回 id 属性。将其更改为 data-price
var ids = $("div[data-price]").map(function() {
return $(this).data("price");
}).get();
var highest = Math.max.apply( Math, ids );
var lowest = Math.min.apply( Math, ids );
alert(highest)
alert(lowest)
你需要 return data-price 属性,而不是它的 id
var ids = $("div[data-price]").map(function() {
return $(this).attr("data-price");
}).get();
var highest = Math.max.apply( Math, ids );
var lowest = Math.min.apply( Math, ids );
alert(highest);
alert(lowest);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-price="2" class="maindiv">test</div>
<div data-price="5" class="maindiv">test</div>
<div data-price="3" class="maindiv">test</div>
<div data-price="0" class="maindiv">test</div>
<div data-price="25"class="maindiv">test</div>
<div data-price="10" class="maindiv">test</div>
您可以使用常规 JavaScript:
//Variable to hold our results
var data = [];
//Loop through HTML nodes
for (var i = 0; i < document.querySelectorAll(".maindiv").length; i++) {
data.push({
node : document.querySelectorAll(".maindiv")[i],
value : parseInt(document.querySelectorAll(".maindiv")[i].getAttribute("data-price"))
});
}
//Sort lowest to highest (Only use one sort! Pick either this or the next one as they overwrite each Other)
data = data.sort(function (a, b) {
return a.value - b.value;
});
//Sort highest to lowest (Only use one sort! Pick either this or the last one as they overwrite each Other)
data = data.sort(function (a, b) {
return b.value - a.value;
});
//List all
console.log(data);
//List first (highest or lowest depending or sort)
console.log('first', data[0].value);
//List last (highest or lowest depending or sort)
console.log('last', data[data.length-1].value);
<div data-price="2" class="maindiv">test</div>
<div data-price="5" class="maindiv">test</div>
<div data-price="3" class="maindiv">test</div>
<div data-price="0" class="maindiv">test</div>
<div data-price="25" class="maindiv">test</div>
<div data-price="10" class="maindiv">test</div>
我需要在数据属性中找到最小值和最大值,但是 returns 0
这是我的代码
<div data-price="2" class="maindiv">test</div>
<div data-price="5" class="maindiv">test</div>
<div data-price="3" class="maindiv">test</div>
<div data-price="0" class="maindiv">test</div>
<div data-price="25" class="maindiv">test</div>
<div data-price="10" class="maindiv">test</div>
<script>
var ids = $("div[data-price]").map(function() {
return this.id;
}).get();
var highest = Math.max.apply( Math, ids );
var lowest = Math.min.apply( Math, ids );
alert(highest);
alert(lowest);
</script>
目前您正在从 map
函数返回 id 属性。将其更改为 data-price
var ids = $("div[data-price]").map(function() {
return $(this).data("price");
}).get();
var highest = Math.max.apply( Math, ids );
var lowest = Math.min.apply( Math, ids );
alert(highest)
alert(lowest)
你需要 return data-price 属性,而不是它的 id
var ids = $("div[data-price]").map(function() {
return $(this).attr("data-price");
}).get();
var highest = Math.max.apply( Math, ids );
var lowest = Math.min.apply( Math, ids );
alert(highest);
alert(lowest);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-price="2" class="maindiv">test</div>
<div data-price="5" class="maindiv">test</div>
<div data-price="3" class="maindiv">test</div>
<div data-price="0" class="maindiv">test</div>
<div data-price="25"class="maindiv">test</div>
<div data-price="10" class="maindiv">test</div>
您可以使用常规 JavaScript:
//Variable to hold our results
var data = [];
//Loop through HTML nodes
for (var i = 0; i < document.querySelectorAll(".maindiv").length; i++) {
data.push({
node : document.querySelectorAll(".maindiv")[i],
value : parseInt(document.querySelectorAll(".maindiv")[i].getAttribute("data-price"))
});
}
//Sort lowest to highest (Only use one sort! Pick either this or the next one as they overwrite each Other)
data = data.sort(function (a, b) {
return a.value - b.value;
});
//Sort highest to lowest (Only use one sort! Pick either this or the last one as they overwrite each Other)
data = data.sort(function (a, b) {
return b.value - a.value;
});
//List all
console.log(data);
//List first (highest or lowest depending or sort)
console.log('first', data[0].value);
//List last (highest or lowest depending or sort)
console.log('last', data[data.length-1].value);
<div data-price="2" class="maindiv">test</div>
<div data-price="5" class="maindiv">test</div>
<div data-price="3" class="maindiv">test</div>
<div data-price="0" class="maindiv">test</div>
<div data-price="25" class="maindiv">test</div>
<div data-price="10" class="maindiv">test</div>