所以我使用名为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');
};
答案 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中。