我想通过JavaScript格式化货币,所以我。即“5.99”变为“5,99€”。我认为我可以通过给包含货币的元素一个特殊类并使用jQuery选择器来查找这些元素并格式化其内容来实现这一点,例如:
<!-- ... -->
<td class="currency">5.99</td>
<!-- ... -->
// ...
$(".currency").each(function(index, element) {
element.html( myNumberFormatMethod(element.text()) );
});
// ...
将给定的JavaScript代码放入jQuery的onload方法适用于从服务器接收页面时DOM树中已存在的元素。但是,每当动态创建具有给定类的元素时,我还需要执行该函数。不幸的是,没有像“dom changed”那样的事件,那么最好的方法是什么呢?
答案 0 :(得分:0)
当更改/添加所述元素时,触发它们上的事件。
$("#sometable").append(newRowWithCurrency).find(".currency").trigger("changed");
现在您可以使用委派的事件处理程序捕获它并更新文本。
$(document).on("changed",".currency",function(){
$(this).html( myNumberFormatMethod($(this).text()) );
});
答案 1 :(得分:0)
对于记录,可以检查是否在dom中创建了元素。但浏览器支持不好(IE有问题)。
我做了一个jsfiddle演示DOMNodeInserted
http://jsfiddle.net/kasperfish/AAd8f/1/(可能无法在IE中使用)
此外,如果通过ajax调用添加元素(新货币值),您还可以使用$ .ajaxSetup在成功时定义标准回调函数。
$.ajaxSetup({
beforeSend: function() {
// standard stuff that has to be done before every ajax call
},
complete: function(xhr, stat) {
// standard stuff that has to be when complete
}
success: function(result,status,xhr) {
// standard stuff that has to be done when success: in your case add currency symbols
}
});
然而,您最好的选择可能是在dom节点创建函数中使用回调,如其他答案中所述。