Javascript 如何使用jQuery选择器查找动态创建的元素?

Javascript 如何使用jQuery选择器查找动态创建的元素?,javascript,jquery,Javascript,Jquery,我有一个表格,里面有一些元素。我想获取表单中的所有元素,而不管它们的深度如何 这是我的测试代码 $(document).ready(function(){ //script.init(markchaining); $('#checkbutton').click(function(){ $('#saveForm :input').each(function(key){ if($(this).is('select'))

我有一个表格,里面有一些元素。我想获取表单中的所有元素,而不管它们的深度如何

这是我的测试代码

$(document).ready(function(){
    //script.init(markchaining);
    $('#checkbutton').click(function(){
        $('#saveForm :input').each(function(key){
            if($(this).is('select'))
            {
                var id = $(this).attr('id');
                console.log('id is '+id);
                $(this).trigger('change');
                console.log('if-> Element name is '+$(this).attr('name'));
            }
            else
            {
                console.log('else-> Element name is '+$(this).attr('name'));
            }

      });
    });
});

function addRow(ele,name)
{
var id = ele.id;
    $('#'+id+'').closest('tr').after('<tr><td class="label-cell">New Row</td><td><input type="text" name="'+name+'" /></td></tr>');
}
$(文档).ready(函数(){
//script.init(标记链接);
$(“#检查按钮”)。单击(函数(){
$('#saveForm:input')。每个(函数(键){
if($(this).is('select'))
{
var id=$(this.attr('id');
console.log('id为'+id');
$(this.trigger('change');
log('if->Element name为'+$(this.attr('name'));
}
其他的
{
log('else->Element name为'+$(this.attr('name'));
}
});
});
});
函数addRow(元素,名称)
{
变量id=元素id;
$('#'+id+'')。最近('tr')。在('New Row')之后;
}
我的问题

我还有一些动态元素,它们将在迭代过程中的某些
select
change events上创建。我希望在遍历表单时获得这些动态创建的元素

我无法访问通过单击“检查”按钮动态创建的“新行”元素


是我的完整测试代码

刚刚添加了一个
计数
变量来区分控制台上的名称

$(document).ready(function(){
    //script.init(markchaining);
    $('#checkbutton').click(function(){
        $('#saveForm :input').each(function(key){
            if($(this).is('select'))
            {
                var id = $(this).attr('id');
                console.log('id is '+id);
                $(this).trigger('change');
                console.log('if-> Element name is '+$(this).attr('name'));
            }
            else
            {
                console.log('else-> Element name is '+$(this).attr('name'));
            }

      });
    });
});

function addRow(ele,name)
{
var id = ele.id;
    $('#'+id+'').closest('tr').after('<tr><td class="label-cell">New Row</td><td><input type="text" name="'+name+'" /></td></tr>');
}
$(文档).ready(函数(){
//script.init(标记链接);
$(“#检查按钮”)。单击(函数(){
$('#saveForm:input')。每个(函数(键){
if($(this).is('select')){
var id=$(this.attr('id');
console.log('id为'+id');
$(this.trigger('change');
log('if->Element name为'+$(this.attr('name'));
}否则{
log('else->Element name为'+$(this.attr('name'));
}
});
});
//单击两次以显示控制台
$(“#检查按钮”)。单击();
$(“#检查按钮”)。单击();
});
var计数=0;
函数addRow(元素,名称){
变量id=元素id;
$('#'+id+'')。最近('tr')。在('New Row')之后;
}


什么不起作用?但是当您访问
循环中的元素时,它们就在
DOM中,它们应该很容易访问…我不会在单击“检查”按钮时得到新创建的行。如果您看到控制台,除了新行之外,所有元素都被访问,这将向正确的方向推送:您确定无法访问新创建的元素吗?因为您提到的小提琴工作正常,并且新元素的名称正在打印。我可以看到
else->Element name is myid
在控制台
n
中打印的次数,
n
是动态创建的输入数。您在上面提到它正在打印
n
次数,
n
是动态创建的输入数,但实际上是
n-1
。它不会在第一次单击时打印第一次单击时如何打印?实际上,您当时正在创建它。
每个
选择器已经选择了所有的
输入
,然后对于每个输入(已经选择),它正在执行其中的代码。下一次,
每个人都可以看到该元素。如果需要每个人中的元素,请检查答案的更新部分。这只是一个建议。