Hy,我的问题是http://jsfiddle.net/VZ2MK/1/
(function(){
var input = $('.test').clone();
$('a.add_input').on('click', function(e){
$(this).before(input);
e.preventDefault();
});
})();
我需要动态添加表单的某些部分,我想我会克隆它然后添加它。 它第一次工作,但如果我想不止一次添加,它停止,我的意思是它不起作用。 有什么想法吗?
答案 0 :(得分:6)
您应该每次点击都克隆它。 demo。
var input = $('.test');
$('a.add_input').on('click', function(e){
$(this).before(input.clone());
e.preventDefault();
});
答案 1 :(得分:5)
问题是before
在将元素插入所选元素之前将元素从当前位置分离。你需要每次都做克隆,而不是一次:
(function(){
$('a.add_input').on('click', function(e){
var input = $('.test').last().clone();
$(this).before(input);
e.preventDefault();
});
})();
您的原始代码是第一次插入克隆,但在后续情况下将其删除,然后再将其重新添加到完全相同的位置。
请注意,我只是克隆last
项$('.test')
以避免第一次添加1,第二次添加2,第三次添加4等等。
答案 2 :(得分:0)
克隆每次点击都有效:
(function(){
$('a.add_input').on('click', function(e){
var input = $('.test').clone();
$(this).before(input);
e.preventDefault();
});
})();
答案 3 :(得分:-2)
这应该有效:
但我没有使用clone()
(function(){
input = $('.test').html();
$('a.add_input').click(function(e){
$(this).before('<div>' + input + '</div>');
e.preventDefault();
});
})();