Javascript 使用jQuery遍历附加项 问题:

Javascript 使用jQuery遍历附加项 问题:,javascript,jquery,each,Javascript,Jquery,Each,我有一个表单,它使用jQuery来实现魔术。该表单上有一个按钮添加帐户。该按钮附加字段账户和金额,以及另一个按钮删除账户(如果您可以猜到,它会删除这两个字段)。这一切都很好 在同一表格中还有另一个字段工资,我想将其与所有金额字段的总数进行比较。问题是,当我使用jQuery的$时,each()迭代金额字段,它只识别加载页面时DOM中存在的字段,而不识别新添加的字段 如何遍历这些附加的金额字段?(或者,也许有更好的方法可以做到这一点?) 我现在做的是: $(document).ready(funct

我有一个表单,它使用jQuery来实现魔术。该表单上有一个按钮
添加帐户
。该按钮附加字段
账户
金额
,以及另一个按钮
删除账户
(如果您可以猜到,它会删除这两个字段)。这一切都很好

在同一表格中还有另一个字段
工资
,我想将其与所有
金额
字段的总数进行比较。问题是,当我使用jQuery的
$时,each()
迭代
金额
字段,它只识别加载页面时DOM中存在的字段,而不识别新添加的字段

如何遍历这些附加的
金额
字段?(或者,也许有更好的方法可以做到这一点?)

我现在做的是:

$(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
    });
  }
}
谢谢


答复
因此,在一开始就包含我的其余代码可能会更有帮助,因为问题是addaccount事件中的一个简单错误。我错误地标记了我的容器类,只在附加项的名称中添加了一个“s”。无论如何,这是评论!在JSFIDLE上发布一个示例帮助我找到了这个错误,所以如果您想知道的话。

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

在这个提琴器中,简单for循环用于计算总量

//按钮单击获取总计
$('#GetTotal')。单击(函数(事件){
var tableID=“NewInvoiceTable”;
GetTotalAmount(表ID);
返回false;
});
//合计
函数GetTotalAmount(tableID)
{
变量i=$('#'+tableID+'tr')。长度;
警报(“总行数-”+i);
var-totam=0;

对于(j=0;jc)你能发布一个重现问题的实时演示吗?试试看,或者展示其余的代码。“添加帐户”缺少代码。另外,在添加帐户后显示html的外观可能会有所帮助。如果无法迭代动态添加的项目,则可能是因为这些项目上没有与选择器匹配的正确类。我们可以帮助您的唯一方法是查看添加项目的代码的外观页面。当页面加载时,表单有一个
帐户
金额
字段。问题是我无法遍历附加字段。附加字段在事件被委派时仍会触发事件,这些项在首次加载DOM时不需要出现。感谢您的响应,然而,你的例子和我想做的略有不同。
//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);
}