Jquery插件FormatCurrency无法正常工作

时间:2012-08-23 19:20:35

标签: jquery asp.net-mvc-3

所以我使用名为FormatCurrency的Jquery插件(这应该很明显)格式化一些货币格式的数字。 jQuery函数对第一行数字很有用,但第二行有一些问题。

让我先解释一下我在做什么:

如果我点击树并展开我要选择的行,那么树会再打开两行Capital和Expense。 jQuery在大写行上工作得很好,使用了格式,行从123456变为$ 123,456,但Expense Row保持不变。

我还发现如果我点击其他区域,Expense行确实接受formatCurrency样式更改,就像我展开另一行不同的数字一样。所以Jquery正在工作,它只是没有完成样式更改,直到我点击另一行,如果我回到我最初点击的原始行,样式更改仅在Expense Row上再次删除。我希望这一切都有道理。我已经在下面发布了我的代码,我将经常回来查看,所以随时可以提出任何有助于解决问题的问题。谢谢你的帮助!

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 个答案:

答案 0 :(得分: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中。