2012-08-23 3 views
0

FormatCurrency라는 Jquery 플러그인을 사용하여 일부 숫자를 통화 형식으로 포맷합니다. jQuery 함수는 숫자의 첫 번째 행에서 잘 작동하지만 두 번째 행에는 몇 가지 문제가 있습니다. Jquery plugin FormatCurrency가 올바르게 작동하지 않습니다.

는 제가 처음 일을하고 무엇을 설명하자

I 트리를 클릭하고 난 나무가 둘 이상의 행 자본과 비용을 열어 선택하려는 행을 확장합니다. jQuery는 대문자 행에서 훌륭하게 작동하며 형식은 사용되며 행은 123456에서 $ 123,456으로 변경되지만 비용 행은 변경되지 않습니다.

다른 행을 다른 숫자로 확장하는 경우와 같이 다른 영역을 클릭하면 비용 행에서 formatCurrency 스타일이 변경된다는 것을 알게되었습니다. 그래서 Jquery가 작동하고 있습니다. 다른 행을 클릭하기 전까지 스타일 변경을 완료하지 않고 처음에 클릭 한 원래 행으로 돌아 가면 스타일 변경이 비용 행에서만 다시 제거됩니다. 이 모든 것이 의미가 있기를 바랍니다. 나는 아래에 나의 코드를 올렸고, 나는 자주 다시 체크 할 것이므로이 문제를 해결하는 데 도움이 될 수있는 질문을 자유롭게 물어 보라. 도와 줘서 고마워!

pa_click = function (pa_label) { 
      PA_ID = pa_label.getAttribute('pa_id'); 

      var pa_details = document.getElementById('pa-details-' + PA_ID); 

      jQuery.getJSON('@Url.Action("getAjaxSCs")', { PA: pa_label.title }, function (SCS) { 
       pa_details.innerHTML = ""; 
       jQuery.each(SCS, function (index, SC) { 

        months_html = ''; 
        jQuery('.currency').formatCurrency({ 
         colorize: true, 
         roundToDecimalPlace: -2, 


        }); 

        for (var i = 0; i < 12; i++) { 

         index = index.replace(/\s/g, "-"); 
         months_html += 
              '<div id="SC-' + index + '-' + months[i] + '" class="month-wrapper tree border-white currency">' + // This is where I add the currency class 
              SC[i] + // This is the variable I need to replace with code to add currency to the amount 
              '</div>'; 
        } 

        pa_details.innerHTML += 

          '<div id ="Spend-Category-' + index + '" class="sc-wrapper tree border">' + 
           '<div id ="sc-title-' + index + '" class="sc-title">' + 
            '<div class = "sc-label" title = "' + index + '" SC_id="' + index + '" onclick = "sc_click(this)">' + index + '</div>' + 
            months_html + 
           '</div>' + 
           '<div id="sc-details-' + index + '" class = "pa-details" style = "display:none">' + index + '</div>' + 
          '</div>'; 
       }) 
      }); 
      jQuery('#pa-details-' + PA_ID).toggle('fast'); 

     }; 

답변

1

장소는 DOM에 당신의 모든 요소를 ​​추가 한 후 .formatCurrency에 대한 호출.

예를 들어, 당신과 같이 리팩토링 수 :

pa_details.innerHTML = ""; 

jQuery.each(SCS, function (index, SC) { 
    months_html = ''; 
    for (var i = 0; i < 12; i++) { 
    ... 
    } 
    pa_details.innerHTML += "BIG CONCATENATION HERE"; 
}); 

jQuery('.currency').formatCurrency({ 
    colorize: true, 
    roundToDecimalPlace: -2 
}); 

이것은 당신이 요소를 포맷하기 전에 모든 요소가 DOM에 존재 할 수 있습니다.

+0

안녕하세요. – BradBrening

+0

Brad에게 감사 드려라, 나는 내 머리 뒤에서 나는 이런 느낌이었다고 생각한다. 귀하의 답변에 감사드립니다. 유익하고 간결하며 매우 도움이되었으므로 필요한 코드를 변경하지 않고 즉시 작업 할 수있었습니다. – Goldentp

관련 문제