我在这里已经阅读了一些解决方案,但我仍然无法弄清楚为什么我的div
拒绝不止一次克隆。
这是我的html
:
<h4 class="ui dividing header">Maklumat Ahli Keluarga</h4>
<div class="input_fields_wrap">
<button class="add_field_button">Add More Fields</button>
<div class="ahli_keluarga" id="ahli_keluarga1">
<div class="field">
<label>Nama</label>
<div class="field">
<input type="text" name="shipping[first-name]" placeholder="Nama Penuh">
</div>
</div>
</div>
</div>
这是我的剧本:
<script type="text/javascript">
$(document).ready(function() {
var max_fields = 10; //maximum div allowed
var wrapper = $(".input_fields_wrap"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var clone = $( ".ahli_keluarga:first").clone().append('<a href="#" class="remove_field">Remove</a>');
var x = 1; //initlal div count
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
if(x < max_fields){ //max div allowed
x++; //div increment
$(wrapper).append(clone); //
}
});
$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});
</script>
克隆有效,但只能克隆div
一次。
答案 0 :(得分:3)
$(document).ready(function() {
var max_fields = 10; //maximum input boxes allowed
var wrapper = $(".input_fields_wrap"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var x = 1; //initlal text box count
add_button.click(function(e){ //on add input button click
e.preventDefault();
if(x < max_fields){ //max input box allowed
x++; //text box increment
var clone = $( ".ahli_keluarga:first").clone().append('<a href="#" class="remove_field">Remove</a>');
wrapper.append(clone); //
}
});
wrapper.on("click",".remove_field", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});
在您的活动中,无需再次提供选择器
add_button.click
wrapper.on("click"
编辑:我将事件中的克隆移动到克隆一个新实例,而不是插入DOM中的同一个实例。
我还为你创造了一个小提琴:https://jsfiddle.net/hpyzzcj9/
答案 1 :(得分:3)
每次单击add时都需要克隆节点,否则它只会引用已存在的元素。此外,您的wrapper
已经是一个jQuery元素,因此无需包含$()
。
更改此行:
$(wrapper).append(clone);
到
wrapper.append(clone.clone());
如果你想看到它正在运行,下面有一个完整的运行代码段。
$(document).ready(function() {
var max_fields = 10; //maximum div allowed
var wrapper = $(".input_fields_wrap"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var clone = $(".ahli_keluarga:first").clone().append('<a href="#" class="remove_field">Remove</a>');
var x = 1; //initlal div count
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
if(x < max_fields){ //max div allowed
x++; //div increment
wrapper.append(clone.clone()); //
}
});
$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h4 class="ui dividing header">Maklumat Ahli Keluarga</h4>
<div class="input_fields_wrap">
<button class="add_field_button">Add More Fields</button>
<div class="ahli_keluarga">
<div class="field">
<label>Nama</label>
<div class="field">
<input type="text" name="shipping[first-name]" placeholder="Nama Penuh">
</div>
</div>
</div>
</div>