为什么jQuery appendTo会删除现有的列表项?

时间:2016-05-06 08:05:23

标签: javascript jquery html

我正在开发一个项目,我需要在dblclick上将列表项从list1添加到list2,或者按Add按钮。 到目前为止,我已经完成了这个Working jsfiddle

 $().ready(function() {  
var classHighlight = 'highlight';
var $thumbs = $('ul li').click(function(e) {
    e.preventDefault();
    $thumbs.removeClass(classHighlight);
    $(this).addClass(classHighlight);
});
$('#select1').on ("dblclick","li", function(){
return $(this).appendTo('#select2').removeClass('highlight'); 
});
$('#select2').on ("dblclick","li", function(){
return $(this).remove(); 
});
   $('#add').click(function() {  
   $('#select1 .highlight').appendTo('#select2').removeClass('highlight'); 
   });  
   $('#remove').click(function() {  
     $('#select2 .highlight').remove();
   });  
  });  

但是如果你看到点击list1项目也会从list1删除我不想要的点击项目。我只需要将它从list1复制到list2任何人都可以帮我这个吗? 谢谢

2 个答案:

答案 0 :(得分:5)

将现有元素追加到新父元素时,移动它;它没有被复制。您应首先克隆该元素,然后附加克隆元素:

$('#select1').on ("dblclick","li", function(){
  return $(this).clone().appendTo('#select2').removeClass('highlight'); 
});

$('#add').click(function() {  
 $('#select1 .highlight').clone().appendTo('#select2').removeClass('highlight'); 
});   

<强> Working Demo

答案 1 :(得分:0)

你使用clone()函数来帮助这段代码

$('#select1').on ("dblclick","li", function(){
   return $(this).clone().appendTo('#select2').removeClass('highlight'); 
});

这里的整个代码 http://jsfiddle.net/s41txkng/4/

https://api.jquery.com/clone/