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

时间:2014-04-25 18:34:22

标签: javascript jquery

我有一组带有数据属性的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;
}

2 个答案:

答案 0 :(得分:1)

我喜欢这样:

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

答案 1 :(得分:0)

我认为@ 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/