2014-04-25 2 views
3

데이터 속성이있는 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> 

나는 그들을 통해 모든이 속성 li, 다음 루프를 얻을 수 $('[data-some-value]')를 사용할 수 있습니다. 하지만 js 또는 jquery 메서드를 사용하면이 작업을 더 쉽게 수행 할 수 있는지 확실하지 않습니다. 내가있어 가장이 일을한다

: 그러나 나는 전에이 주변에 바이올린을,

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

나는이 방법을 좋아한다 나는 그의 대답을 보았고, 나는 내가 그것을하고 싶었던 방식으로 나눌 것을 생각했다. 함수는 아니지만 html 구조와 완벽하게 작동합니다. 나는 dataset 속성을 사용했다. http://jsfiddle.net/vVkr6/

+0

왜 "-Infinity"

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

나는이 바이올린이 추가? –

+1

@DonnyP 당신이 숫자가 아닌 애트리뷰트를 가지고 있다면'data-for-something = "a" – juvian

0

내가 juvian의 대답은 아마 최고 @ 생각 :

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; 
} 
관련 문제