【问题标题】:Sum/ subtract dynamic element by id using jQuery使用 jQuery 按 id 求和/减去动态元素
【发布时间】:2011-07-20 23:05:18
【问题描述】:

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

我在别处找到了一个 sn-p,我将其用于对具有类“价格”的元素求和,并将结果显示在 id 为“总价格”的 div 中

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

这会在单击添加票链接时生成总价,但当页面最初加载时它什么也不显示(它应该具有默认情况下存在的一张票的价格)。此外,当一张票被移除时,我需要一个函数来从总价中减去该票的价格。 最后,我更喜欢以美元为单位的价格,但是当我这样做时会得到一个 NaN,我想我需要某种正则表达式?

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

【问题讨论】:

    标签: jquery ruby-on-rails


    【解决方案1】:

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

    <body onload="displayPrice()">

    要删除票证,您可以删除具有“价格”类的对象,然后再次调用“显示价格”函数。

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

    return '$' + a
    

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

    【讨论】:

    • 不要通过onload来调用函数,而应该使用jQuery ready函数。 $(displayPrice());
    • 感谢@Clayton 编辑了问题以包含相关功能。欣赏答案仍然不确定该怎么做。在正则表达式中,我使用 rails helper number_to_currency 将例如 10.5 渲染为 10.50 美元的“价格”,但这会导致 jquery 函数中出现 NaN。
    • @Mick Ruane 如果每个 .price 值前面都有一个 $ 符号,则需要在尝试解析该值之前将其删除。试试$(this).html().replace(/[^0-9.]/g, '');。此外,如果您的值不是整数,则需要使用 parseFloat()。
    猜你喜欢
    • 2015-01-28
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    相关资源
    最近更新 更多