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