2011-11-20 90 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 =',这会简单得多。