从一组DOM元素中获取最高的属性值



我有一组具有数据属性的DOM元素。如何获得最大值?

<li data-for-something="1"></li>
<li data-for-something="1"></li>
<li data-for-something="2"></li>
<li data-for-something="3"></li>
<li data-for-something="4"></li>

我可以使用$('[data-some-value]')来获得所有具有此属性的li,然后循环使用它们。但我不确定有什么js或jquery方法可以让这更容易。

我做得最好的就是:

function getMaxAttributeValue(attribute_name) {
  var max_value = 0;
  $('[' + attribute_name + ']').map(function(){
    var this_value = this.attr(attribute_name);
    if (this_value > max_value) {
      max_value = this_value;
    }
  });
  return max_value;
}

我喜欢这种方式:

function getMaxAttributeValue(attribute_name) {
  return Math.max.apply( Math, $('[' + attribute_name + ']').map(function(){
    return Number($(this).attr(attribute_name)) || -Infinity;
  }))
}
console.log(getMaxAttributeValue("data-for-something"))  // outputs 4

我认为@juvian的答案可能是最好的,但在看到他的答案之前,我一直在努力,所以我想我会分享我想要的方法。它不是一个函数,但与你的html结构完美配合。我使用了dataset属性。

var array = new Array;
$('li').each( function() { 
    array.push(parseInt($(this)[0].dataset.forSomething));
});
console.log(Math.max.apply(Math, array)); 

我在小提琴上加了这个:http://jsfiddle.net/vVkr6/

最新更新