Jquery classname.each函数不适用于动态添加的函数

Jquery classname.each函数不适用于动态添加的函数,jquery,Jquery,下面的示例用于在动态添加的文本框中添加数字。 第一个输入指示应显示文本框的编号。如果为5,则将显示5文本框 HTML 但当我使用类名时,它显示了错误的答案 $(document).on('click', ".btn1", function(){ var sum=0; var d; $(".test").each(function () { d=$(this).val(); sum=sum+parseInt(d); });

下面的示例用于在动态添加的文本框中添加数字。
第一个输入指示应显示文本框的编号。如果为5,则将显示5文本框

HTML

但当我使用类名时,它显示了错误的答案

 $(document).on('click', ".btn1", function(){  
    var sum=0;
    var d;
    $(".test").each(function () {
        d=$(this).val();
        sum=sum+parseInt(d);
    });
    alert(sum);
 });

为什么classname.each函数不适用于动态添加的元素集。但是如果我添加任何文本框(不是动态添加),classname.each函数在这种情况下工作。动态添加类有什么方法吗?

您没有在
class=test
后面加空格,因此该类是
test/
。最佳做法是引用您的属性

$(文档)。在('click',“#btn”,function()上{
$('#maindiv')。空;
变量计数=$('#cd').val();
var i=0;
而(我<计数){
$('#maindiv')。附加('');
i++;
}
$('#maindiv')。附加('');
});
$(文档).on('click',“.btn1”,函数(){
var总和=0;
变量d;
$(“.test”)。每个(函数(){
d=$(this.val();
sum=sum+parseInt(d);
});
警报(总和);
});

输入计数

具有相同ID的两个元素
cd
?|函数名应该是
empty()
相同的ID cd对答案
没有任何影响。测试
包括按钮右侧的输入字段,您记得填写吗?您可能应该检查
parseInt
是否返回
NaN
。否则,仅当所有字段都已填写时,它才起作用。
$(document).on('click', "#btn", function(){  
    $('#maindiv').empty;
    var count=$('#cd').val();
    var i=0;
    while(i<count) {
        $('#maindiv').append("<div><input name=DynamicTextBox  type=text          class=test/></div>");              
    } 
    $('#maindiv').append("<input type=button value=add  class=btn1 />");                
});
$(document).on('click', ".btn1", function(){  
    var sum=0;
    var d;
    $("input[name=DynamicTextBox]").each(function () {
        d=$(this).val();
        sum=sum+parseInt(d);                
    });
    alert(sum);
});
 $(document).on('click', ".btn1", function(){  
    var sum=0;
    var d;
    $(".test").each(function () {
        d=$(this).val();
        sum=sum+parseInt(d);
    });
    alert(sum);
 });