div克隆和循环中生成的div之间有什么区别吗?
我有两种情况:
div 1:
$('.div1').clone(true).insertAfter('.created_form');
<div class="div2"></div>
ENDLOOP
我在每个div中都有一个按钮,用于在按下按钮时删除div。
但删除按钮仅适用于克隆的div(div1)
因为div 2不起作用。
我删除div的代码是:
$('.buttons').on('click', '.minus_sign', function() {
var parent_id = $(this).parent().attr('id');
$("#"+parent_id).remove();
$("input[name='"+parent_id+"']").remove();
});
有人可以告诉我为什么这两个都不合适吗?我提到div是exaclty相同,只有id是不同的!谢谢
答案 0 :(得分:0)
那是因为没有克隆创建的那个没有id
属性。
<div class="div2"></div>
但是,如果你给它一个id:
<div id="myDiv" class="div2"></div>
它会起作用。
答案 1 :(得分:0)
假设原始元素具有id
属性,那么您在循环内创建的属性并不具有此answer中提到的id
属性。
即使它有一个,因为您使用.clone(true)
,克隆将拥有克隆元素的数据和事件处理程序。
但是在内部循环中创建的那个不包含事件处理程序。
由于您将.minus_sign
的点击委托给也是动态创建的按钮,因此事件委派无效。
您应该将事件处理程序委托给静态元素,例如
$(document).on('click', '.buttons .minus_sign', function() {
var parent_id = $(this).parent().attr('id');
$("#"+parent_id).remove();
$("input[name='"+parent_id+"']").remove();
});
BTW,由于remove()
方法返回已删除的元素,您可以执行上述操作,如
$(document).on('click', '.buttons .minus_sign', function() {
var parent_id = $(this).parent().remove().attr('id');
$("input[name='"+parent_id+"']").remove();
});