使用jQuery通过id对动态元素求和/减去

时间:2011-07-20 23:05:18

标签: jquery ruby-on-rails

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

我在其他地方找到了一个代码片段,我将这些元素与“价格”类相加,并将结果显示在ID为“total_price”的div中

$('#total_price').html(function() {
var a = 0;
 $(".price").each(function() {
 a += parseInt($(this).html());
     });
return a;
 });

这会在单击添加票证链接时生成总价格,但是当页面最初加载时它不显示任何内容(它应该具有默认情况下一个票证的价格)。同样,当票证被删除时,我需要一个功能来从总票数中减去该票证的价格。 最后我希望价格是美元,但是当我这样做时会得到一个NaN,我想我需要某种类型的正则表达式?

对于jquery更新的rails新手,非常感谢对此有所帮助,谢谢!

删除票证功能

    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));
}

1 个答案:

答案 0 :(得分:1)

对于第一个问题,我不确定其余代码的结构,但价格可能不会出现,具体取决于执行javascript的时间。我建议创建一个名为'displayPrice'的函数,并将代码粘贴到那里。单击按钮时调用该函数,并在主体完全加载时调用它:

<body onload="displayPrice()">

要删除票证,您可以使用“价格”类删除该对象,然后再次调用“displayPrice”函数。

对于美元符号,将函数设置为

返回
return '$' + a

Javascript应该为您处理类型转换。