2014-02-11 2 views
2

여러 개의 진행 막대를 동시에 애니메이션화하려고하지만 각기 다른 값을 사용하려고합니다. 다음 HTML과 jQuery 두 막대를 모두 사용하면 동일한 최종 값으로 이동합니다.여러 동적 jQuery 진행률 막대를 사용하는 방법

<progress id="progressbar" value="50" max="100"></progress><span class="progress-value">0%</span> 
<progress id="progressbar" value="30" max="100"></progress><span class="progress-value">0%</span> 

......

<script> 
$(document).ready(function() { 

var progressbar = $('#progressbar'), 
     max = progressbar.attr('value'), 
     time = (1000/max)*2,  
     value = 0 

    var loading = function() { 
     value += 1; 
     addValue = progressbar.val(value); 

     $('.progress-value').html(value + '%'); 

     if (value == max) { 
      clearInterval(animate);      
     } 
    }; 

    var animate = setInterval(function() { 
     loading(); 
    }, time); 

}); 
</script> 

는 내가 진행 막대의 두 인스턴스 그냥 같은 jQuery를 따르고 있기 때문에이 것을 알고,하지만 난 그것을 동적으로 만들 수있는 방법을 모른다. 어떤 도움을 주시면 감사하겠습니다.

편집 :

var progressbar2 = $('#progressbar2'), 
max2 = progressbar2.attr('value'), 
time2 = (1000/max2)*2,  
    value2 = 0 

    var loading2 = function() { 
    value2 += 1; 
    addValue = progressbar2.val(value); 

    $('.progress-value2').html(value + '%'); 

    if (value2 == max2) { 
     clearInterval(animate2);      
    } 
}; 
var animate2 = setInterval(function() { 
    loading2(); 
}, time); 

이 (원래 함수의 복제를 추가) 작동하지만 분명히 내가하고 싶은 일이 아니다. for 루프와 비슷한 것을 사용하여 가능한 모든 진행 막대를 반복 할 수있는 방법이 있습니까?

+2

ID가 고유해야하며, 두 개의'id = "progressbar"'를 가질 수 없습니다. – Barmar

+0

그래, 그게 문제가 어디에서 왔는지 알았어. jQuery에서 어떻게 해결할 지 모르겠다. – Zach

답변

2

각 컨트롤에 다른 ID를 지정해야합니다. progressbar1, progressbar2 등. id 선택기 대신에 클래스 선택기 을 사용하고 "progress-value"클래스를 사용하여 각 요소를 반복 할 수 있습니다. 이렇게 :

$('.progress-value').each(function(i, obj) { 
    //your code here 
}); 
+0

도움을 주셔서 감사합니다. jQuery가 새로 도입되었으므로 조금 더 질문 할 필요가 있습니다. 귀하가 제공 한 클래스 선택기 함수 안에 전체 코드를 배치했지만, 이제는 특정 진행률 표시 줄 ID를 선택하는 방법을 알지 못합니다. 나는'var progressbar = $ ('# progressbar'+ i)와 같은 것을 시도하고 있지만 분명히 작동하지 않는다. – Zach

+0

편집 내용을 추가 했으므로이 내용을보고 더 잘 만들 수 있는지 알려주세요. – Zach

+0

'$ ('. 진행 값 '). 각 (기능 (ⅰ) { \t \t VAR barID ='#의 진행 막대 '+ I, \t \t 진행 막대 = $ (barID) \t \t 최대 = progressbar.attr ('값') = (1,000/최대 \t \t 시간) * 2 \t 값 = 0 VAR로드 = 함수() + 1 = { \t 값; \t addValue progressbar.val = (값); \t $ ('진행률 - 값') .html (값 + '%'); \t if (값 == 최대) \t { \t \t clearInterval (animate); \t} \t}}; \t \t var animate = setInterval (function() { \t loading();}); });'무한 루프에 갇혔다. – Zach

관련 문제