使用Javascript删除动态添加的字段
我有一个表单,其中我将初始输入字段克隆为模板,以允许用户根据需要添加尽可能多的选项。添加新字段可以正常工作,但当尝试删除它们时,第一个字段会按预期工作,但无法删除所有生成的字段 我对JS的了解很差,但我认为将其设置为删除父级应该是正确的操作使用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
<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)