我有一组具有数据属性的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/