使用jQuery按id求和/减去动态元素
我有一个订单表单,用户可以使用ajax动态添加或删除票据(类似于railscast 197,它是一个嵌套表单)。每个票证显示票证价格(一个ruby实例变量-@event.ticket\u price),其类为“price” 我在其他地方找到了一个片段,我使用它将元素与类“price”相加,并将结果显示在id为“total_price”的div中使用jQuery按id求和/减去动态元素,jquery,ruby-on-rails,Jquery,Ruby On Rails,我有一个订单表单,用户可以使用ajax动态添加或删除票据(类似于railscast 197,它是一个嵌套表单)。每个票证显示票证价格(一个ruby实例变量-@event.ticket\u price),其类为“price” 我在其他地方找到了一个片段,我使用它将元素与类“price”相加,并将结果显示在id为“total_price”的div中 $('#total_price').html(function() { var a = 0; $(".price").each(function()
$('#total_price').html(function() {
var a = 0;
$(".price").each(function() {
a += parseInt($(this).html());
});
return a;
});
这会在单击添加票证链接时生成总价,但当页面最初加载时,它不会显示任何内容(默认情况下,它应该具有一张票证的价格)。另外,当一张票被删除时,我需要一个函数从总票数中减去该票的价格。
最后,我希望价格以美元为单位,但当我这样做时,我想我需要某种正则表达式
rails新手,jquery新手,非常感谢您的帮助,谢谢
删除票据功能
function remove_fields(link) {
$(link).prev("input[type=hidden]").val("1");
$(link).closest(".fields").hide();
}
function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g")
$(link).parent().before(content.replace(regexp, new_id));
}
添加票据功能
function remove_fields(link) {
$(link).prev("input[type=hidden]").val("1");
$(link).closest(".fields").hide();
}
function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g")
$(link).parent().before(content.replace(regexp, new_id));
}
对于第一个问题,我不确定代码其余部分的结构,但价格可能不会根据javascript的执行时间而出现。我建议创建一个名为“displayPrice”的函数,并将代码粘贴到其中。单击按钮时调用该函数,并在身体完全加载时调用该函数,如下所示:
要删除票据,可以删除类为“price”的对象,然后只需再次调用“displayPrice”函数
对于美元符号,将函数设置为返回
return '$' + a
Javascript应该为您处理类型转换。您应该使用jQuery ready函数,而不是通过onload调用该函数<代码>$(displayPrice())代码>谢谢@Clayton编辑了问题,包括相关功能。感谢你的回答,但我仍然不知道该怎么做。在正则表达式上,我使用rails帮助程序编号\u to \u currency将eg 10.5表示为$10.50,用于“price”,但这会导致jquery函数中出现NaN。@Mick Ruane如果每个
.price
值前面都有一个$符号,则需要在尝试解析该值之前去掉该符号。尝试$(this.html()。替换(/[^0-9.]/g')代码>。另外,如果您的值不是整数,则需要使用parseFloat()
。