2011-11-20 85 views
0

對jQuery clone()功能有點問題。基本上我有一個列表:使用按鈕克隆列表元素

<ul id="portfolio"> 
<li id=1><button class="save">content...</button></li> 
<li id=2><button class="save">content...</button></li> 
<li id=3><button class="save">content...</button></li> 
<li id=4><button class="save">content...</button></li> 
<li id=5><button class="save">content...</button></li> 
</ul> 

,我想克隆一個特定列表時,列出了用戶點擊「保存」按鈕的內容。到目前爲止,我有這個jQuery:

$('.save').click(function() { 
var id = 1; 
$('#portfolio li').each(
    function() { 
    $(this).attr('id', 'id' + id++); 
}); 
$('#id1').clone().appendTo('#drop'); 
}); 

此代碼使用戶能夠克隆#id1,因此它是一個開始。但是,我如何獲得我正在尋找的功能?

Thanx!

回答

1

您定位保存按鈕,然後克隆父項。

$('.save').click(function() { $(this).parent('li').clone().appendTo('#drop'); }); 

Here's an Example

重要提示:您應該改變克隆項目的ID,這樣不會有任何衝突!

+0

這也是我的想法,但我認爲它遭受了同樣的問題他的代碼。只有前5個會是'積極的'。你將不得不重新加載頁面以獲得新的按鈕'連接'...或至少這是如何jsfiddle處理它。 – awm

+0

請注意,克隆不會附加在同一個列表中! '#drop!=#protfilio'。如果他希望那些元素能夠克隆,他需要使用'live'或1.7等效的'.on()'。 –

+0

@Truth,謝謝!在我的情況下令人驚歎! – Ismailp

0

我認爲這是你在找什麼:

$(document).ready(function(){ 
    $('#save').click(function(){ 
     var count = parseInt($('#portfolio').val()); 
     var newHTML = []; 
     for(var i=0;i<count+1;i++){ 
     newHTML.push('<ul id=' + count+i ' +'><button class="save">content....</button>'); 
     } 
     $('#portfolio').html(newHTML.join('')); 
    }); 
}); 

那UL和李是什麼使得它比它更難以得到。如果你使用,然後在代碼中做'id =',這會簡單得多。