jQuery:如何计算所有匹配元素的最大属性值?

Mis*_*hko 14 javascript jquery

请考虑以下HTML:

<div class="a" x="6"></div>
<div class="a" x="9"></div>
<div class="a" x="2"></div>
...
<div class="a" x="8"></div>
Run Code Online (Sandbox Code Playgroud)

您如何找到x所有.a元素的最大值?

假设所有x值都是正整数.

Ble*_*der 25

只需循环它们:

var maximum = null;

$('.a').each(function() {
  var value = parseFloat($(this).attr('x'));
  maximum = (value > maximum) ? value : maximum;
});
Run Code Online (Sandbox Code Playgroud)

  • 做得很好,我的答案几乎一样.我会为parseInt添加一个var($(this).attr('x')). (2认同)

top*_*pek 9

我有另一个版本:

var numbers = $(".a").map(function(){
    return parseFloat(this.getAttribute('x')) || -Infinity;
}).toArray();

$("#max").html(Math.max.apply(Math, numbers));
Run Code Online (Sandbox Code Playgroud)

这使用map函数提取x-Attributes的值,将对象转换为数组并将数组元素作为函数参数提供给 Math.max

Math.max技巧从http://ejohn.org/blog/fast-javascript-maxmin/被盗

UPDATE

当没有属性时,添加"|| -Infinity"来正确处理案例.看@kubedan的小提琴