2012-06-27 27 views
2

海蘭插入,我的問題是這樣的http://jsfiddle.net/VZ2MK/1/jQuery的克隆形式元素和形式

(function(){ 

    var input = $('.test').clone(); 

    $('a.add_input').on('click', function(e){ 

     $(this).before(input); 

     e.preventDefault(); 

    }); 

})(); 

我需要動態地添加一個表單的某些部分,我想我會克隆,然後將其添加。 它第一次工作,但如果我想添加多次,它停止,我的意思是它不工作。 任何想法?

回答

6

你應該每次點擊克隆。 demo

var input = $('.test'); 

$('a.add_input').on('click', function(e){ 
    $(this).before(input.clone()); 

    e.preventDefault(); 

}); 
+1

+1,比我的好。刪除。 – gdoron

-2

這應該工作:

http://jsfiddle.net/VZ2MK/4/

但我沒有用clone()

(function(){ 
    input = $('.test').html(); 
    $('a.add_input').click(function(e){ 
     $(this).before('<div>' + input + '</div>');  
     e.preventDefault();  
    }); 
})(); 
+0

很大,非常感謝。保存我的日子 –

+0

請鏈接只是不答覆。在這裏添加一些代碼。 – gdoron

+0

謝謝,但xdazz有一個更好的答案。 –

0

克隆每次點擊的工作原理:

(function(){ 
    $('a.add_input').on('click', function(e){ 
var input = $('.test').clone(); 
     $(this).before(input); 

     e.preventDefault(); 

    }); 
})(); 
5

的問題是,before detatches從它目前的元素,所選擇的元素之前插入之前。你每次都需要做克隆,而不是做一次:

(function(){ 
    $('a.add_input').on('click', function(e){ 
     var input = $('.test').last().clone();  

     $(this).before(input); 

     e.preventDefault(); 
    }); 
})(); 

你原來的代碼插入克隆的第一次,但在後續的場合之前重新添加在完全相同的地方移走它。

注意,我只克隆$('.test')項目last避免增加1第一次,2第二次,4第三次等