使用Javascript删除动态添加的字段

使用Javascript删除动态添加的字段,javascript,jquery,html,forms,dynamically-generated,Javascript,Jquery,Html,Forms,Dynamically Generated,我有一个表单,其中我将初始输入字段克隆为模板,以允许用户根据需要添加尽可能多的选项。添加新字段可以正常工作,但当尝试删除它们时,第一个字段会按预期工作,但无法删除所有生成的字段 我对JS的了解很差,但我认为将其设置为删除父级应该是正确的操作 <script type="text/javascript"> $(function() { var template = $('#inventoryItems .inventory:first').clone(), in

我有一个表单,其中我将初始输入字段克隆为模板,以允许用户根据需要添加尽可能多的选项。添加新字段可以正常工作,但当尝试删除它们时,第一个字段会按预期工作,但无法删除所有生成的字段

我对JS的了解很差,但我认为将其设置为删除父级应该是正确的操作

<script type="text/javascript">
$(function()
{
    var template = $('#inventoryItems .inventory:first').clone(),
        inventoryCount = 1;

    var addInventory = function()
    {
        inventoryCount++;
        var inventory = template.clone().find(':input').each(function()
        {
            var newId = this.id.substring(0, this.id.length-1) + inventoryCount;
            $(this).prev().attr('for', newId); // update label for (assume prev sib is label)
            this.name = this.id = newId; // update id and name (assume the same)
        }).end() // back to .attendee
        .attr('id', 'inv' + inventoryCount) // update attendee id
        .appendTo('#inventoryItems > fieldset'); // add to fieldset
    };

    $('.btnAddInventory').click(addInventory); // attach event
});

$(function()
{
    var removeInventory = function()
    {
        $(this).parent().remove();
    };

    $('.btnRemoveInventory').click(removeInventory); // attach event
});
</script>

$(函数()
{
var template=$('#inventoryItems.inventory:first').clone(),
存货计数=1;
var addInventory=函数()
{
inventoryCount++;
var inventory=template.clone().find(':input').each(function()
{
var newId=this.id.substring(0,this.id.length-1)+inventoryCount;
$(this.prev().attr('for',newId);//更新标签(假设prev-sib是标签)
this.name=this.id=newId;//更新id和name(假设相同)
}).end()//返回到.attendee
.attr('id','inv'+inventoryCount)//更新与会者id
.appendTo(“#inventoryItems>fieldset”);//添加到fieldset
};
$('.btnAddInventory')。单击(addInventory);//附加事件
});
$(函数()
{
var removeInventory=函数()
{
$(this.parent().remove();
};
$('.btnRemoveInventory')。单击(removeInventory);//附加事件
});
HTML:


库存

通过
单击()附加事件(或任何其他快捷方式事件处理程序)仅适用于加载页面时可用的元素。相反,因为您是动态追加元素,所以需要使用委托事件处理程序。更改此项:

$('.btnRemoveInventory').click(removeInventory)
为此:

$('#inventoryItems').on('click', '.btnRemoveInventory', removeInventory)

这是将事件附加到最近的静态元素
#inventoryItems
,然后过滤引发的事件,以查看目标是否匹配
。btnRemoveInventory

完美,谢谢:)我会尽快接受答案。没问题,很高兴提供帮助。
$('#inventoryItems').on('click', '.btnRemoveInventory', removeInventory)