仅克隆元素一次并将其删除
Cloning element only once and removing it
我设置了以下JSFiddle来演示我在做什么。如您所见,我有各种输入。每个输入都有一个用于添加额外行的复选框。如果复选框被选中,它应该在选中的输入下方添加一个新的输入。
现在我所做的似乎没有任何问题 - 虽然它可能会有所改进。
目前我遇到问题
$(this).closest(".labelAndInput").remove();
所以每个部分(我给了他们不同的背景颜色来显示这些部分)应该只允许有一个额外的输入。目前,如果我选中该框,取消选中它,然后再次选中它,它会添加第三个输入。
以上问题大概可以通过以下方法解决。如果未选中复选框,则应删除克隆的 div。这是我目前遇到问题的地方。如果未选中复选框,如何删除克隆?它也应该删除与之相关的 div,而不是随机克隆。
感谢任何信息。
谢谢
只需给您的克隆一个 class 即可准确识别它。 jsfiddle
$(function() {
$('input:checkbox[name="labelNewline"]').change(function() {
if ( $(this).is(':checked') ){
var clone = $(this).parent().siblings(".labelAndInput").first().clone().insertAfter($(this).parent());
clone.addClass('clone');
} else {
$(this).parent().siblings(".clone").remove();
}
});
});
我设置了以下JSFiddle来演示我在做什么。如您所见,我有各种输入。每个输入都有一个用于添加额外行的复选框。如果复选框被选中,它应该在选中的输入下方添加一个新的输入。
现在我所做的似乎没有任何问题 - 虽然它可能会有所改进。
目前我遇到问题
$(this).closest(".labelAndInput").remove();
所以每个部分(我给了他们不同的背景颜色来显示这些部分)应该只允许有一个额外的输入。目前,如果我选中该框,取消选中它,然后再次选中它,它会添加第三个输入。
以上问题大概可以通过以下方法解决。如果未选中复选框,则应删除克隆的 div。这是我目前遇到问题的地方。如果未选中复选框,如何删除克隆?它也应该删除与之相关的 div,而不是随机克隆。
感谢任何信息。
谢谢
只需给您的克隆一个 class 即可准确识别它。 jsfiddle
$(function() {
$('input:checkbox[name="labelNewline"]').change(function() {
if ( $(this).is(':checked') ){
var clone = $(this).parent().siblings(".labelAndInput").first().clone().insertAfter($(this).parent());
clone.addClass('clone');
} else {
$(this).parent().siblings(".clone").remove();
}
});
});