我最近正在使用jQuery,但我有一个问题,我想为自己的每件产品增加两个价值。但是目前,它仅将最后一个元素添加到两者中。该如何解决?
我的jquery:
$('.count').on('blur', function getTotalPrice(){
var name = $(this).parent().parent().find('.name').html();
var count = $(this).val();
$.ajax({
type: "GET",
url: "cart",
data: "name=" + name + "&count=" + count,
success: function(data){
$("#totalPrice").text("Total price: " + data['totalPrice'].toFixed(2)).wrap("<h4></h4>");
$("#productCount").text("(" + data['productCount'] + ")");
console.log(data);
$.each(data['totalPriceForOne'], function(key, value) {
$(".totalPriceForOne").text((key * value).toFixed(2)); //field where i add
});
},
dataType: "json"
});
});
这是我从jsnon得到的:
> productCount: 2
> totalPrice: 910
> totalPriceForOne: {100.00: 1, 810.00: 1}
我需要向每个元素添加totalPriceForOne。如何实现?
答案 0 :(得分:1)
.text(argument)
方法将元素的文本内容替换为参数。
如果将其替换为X,然后立即将其替换为Y,则X不会停留在周围:已被替换。
在循环外创建您的字符串。为循环中的每个新值+=
。设置最终结果,并在最后加上text()
。
或在循环中读取现有值并将其追加:
foo.text( foo.text() + new_text )
或使用append()
方法(警告:当心带有HTML的文本)而不是text()
答案 1 :(得分:1)
如果有一个以上的.totalPriceForOne
元素,并且每个元素都需要从该对象获得不同的总数,则需要对其进行索引。
var index = 0;
$.each(data['totalPriceForOne'], function(key, value) {
$(".totalPriceForOne").eq(index++).text((key * value).toFixed(2)); //field where i add
});
答案 2 :(得分:0)
不确定,但我认为您的问题在这里:
$(".totalPriceForOne").text((key * value).toFixed(2)); //field where i add
实际上,在您的循环中,您将替换之前的值,而不是您想要的值。我建议您使用一些独特的想法(例如id
),而不要使用类选择器。