Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Javascript JS函数不适用于动态字段_Javascript_Jquery - Fatal编程技术网

Javascript JS函数不适用于动态字段

Javascript JS函数不适用于动态字段,javascript,jquery,Javascript,Jquery,我有这个密码 function doCalc() { var total = 0; $('tr').each(function() { $(this).find('input.subtotal').val($('input:eq(1)', this).val() * $('input:eq(2)', this).val()); }); $('.subtotal').each(function() { total += parseInt($(this).val()); }); $(

我有这个密码

function doCalc() {
var total = 0;
$('tr').each(function() {
    $(this).find('input.subtotal').val($('input:eq(1)', this).val() * $('input:eq(2)', this).val());
});
$('.subtotal').each(function() {
    total += parseInt($(this).val());
});
$('#precio').val(total);
}
doCalc();

$('tr input').on('keyup', function() {
doCalc();
});

它是一个具有动态行的表,js函数用于计算“keyup”上的值。但我有一个问题,该函数只在编辑第一行时计算结果。它确实从动态行计算结果,但仅当编辑第一行时

我的Js知识是非常基础的,所以,我在这里问一些人是否知道一种方法使其能够处理动态行

提前感谢。

尝试在此处实施


这个按钮不起作用,因为它没有一个div作为父级,它被td和tr包装。所以试着删除它

$(wrapper).on("click", ".remove_field", function (e) {
   e.preventDefault();
   $(this).closest('tr').remove();
   x--;
});

从您在JSFIDLE上的代码中,我注意到

$('td input').on('keyup', function() {doCalc();});
页面加载时加载,不影响较新的输入标记 将相同的行添加到

$(add_button).click(function(e)
注意这里的区别

关于使用“borrar”删除的问题,请尝试

问题之所以会出现,是因为在“borrar”的父元素中没有div标记

在这里也可以找到同样的情况


谢谢你,很好用。我刚刚发现“Borrar”也就是“remove”不起作用。你知道如何解决这个问题吗?你对第一个bug(没有重新计算数字的事件处理程序)的解决方法是每次添加新行时都向所有行添加处理程序。这意味着某些行将有多个处理程序副本。这其实并不重要,因为处理程序只是更新内容,并且无论如何都会在第二次将它们更新为相同的值,而且处理程序的数量不太可能大到足以显著降低速度。但还是不太好。无论如何,拉贾普拉布胡·阿拉文达萨米的回答通常是首选方式。大卫同意,活动代表团似乎是更好的方式。它确实可以防止每次调用函数时添加处理程序的额外系统调用。
$(add_button).click(function(e)
$(this).parents('tr').remove();