Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery按id求和/减去动态元素_Jquery_Ruby On Rails - Fatal编程技术网

使用jQuery按id求和/减去动态元素

使用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()

我有一个订单表单,用户可以使用ajax动态添加或删除票据(类似于railscast 197,它是一个嵌套表单)。每个票证显示票证价格(一个ruby实例变量-@event.ticket\u price),其类为“price”

我在其他地方找到了一个片段,我使用它将元素与类“price”相加,并将结果显示在id为“total_price”的div中

$('#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()