使用jQuery迭代附加项

时间:2013-09-18 21:58:41

标签: javascript jquery each

问题

我有一个使用jQuery进行魔术的表单。在该表单上是一个按钮Add Account。该按钮会添加字段AccountAmount以及另一个按钮Remove Account(如果您可以猜测,则删除这两个字段)。一切都很好......

在同一表单上还有另一个字段Salary,我想将其与所有Amount字段的总和进行比较。问题是当我使用jQuery的$.each()遍历Amount字段时,它只识别加载页面时DOM中存在的字段,而不是新添加的字段。

如何迭代这些追加的Amount字段? (或者也许最好还是这样做?)

我现在在做什么:

$(document).ready(function(){
  $('#form').on('keyup', '.amount', balanceAmountsWithSalary);
});

var balanceAmountsWithSalary = function(){
  var salary = parseInt($('#salary').val(),10);
  var total = 0;
  $('#accounts .account').each(function(){
    var amount = parseInt($(this).find('.amount').val(),10);
    total += amount;
  });
  if (total === salary) {
    $('#accounts .account').each(function(){
      // Do some stuff to each input.amount located in div.account
    });
  } else {
    $('#accounts .account').each(function(){
      // Do some BAD stuff to each input.amount located in div.account
    });
  }
}

谢谢!


答案

因此,在添加帐户事件中,问题是一个简单的错误,因此在开始时包含其余代码可能会更有帮助。我错误地标记了我的容器类,只在附加项的名称中添加了“s”。在任何情况下,这些评论!在jsFiddle上发布示例帮助我找到了这个错误,所以here is the thing in action以防万一你想知道。

1 个答案:

答案 0 :(得分:0)

由于未提供动态添加输入的HTML代码和代码,我编辑了现有的Fiddler以获得动态添加输入字段的总数。

在这个小提琴手中,简单的for循环用于计算总金额。

Here is a fiddler which might help you.

//button click get total
$('#GetTotal').click( function(event){
        var tableID = "NewInvoiceTable";
        GetTotalAmount(tableID);
        return false;
    });
//Get total
function GetTotalAmount(tableID)
{
    var i = $('#' + tableID + ' tr').length;
    alert("Total Rows -" + i);
    var TotAmt = 0;
    for(j=0;j<i;j++)
    {
        TotAmt += parseInt($('#TotalInline-' + j).val());
    }
    alert("Total Amount - " + TotAmt);
}