2011-01-27 35 views
2

我将如何去除一个对象说从一个无序的列表,并将其添加到另一个列表,同时保持其位置?我知道我可以将原始项目设置为隐藏(),但是这会留下物品用于显示的小空间。假设我有一个列表A和B,如果用户在A中点击一个项目,它需要被添加到B并从A中删除。如果他们现在单击一个按钮从B删除它并返回到A,我想要将它显示在原来的相同位置。我知道我可以通过append()添加它,但不会将它放在同一位置。想到任何人?jQuery删除一个对象,并在同一个地点替换

+1

样品标记可以帮助我们想象这更好。您还需要接受以前问题的答案(使用复选标记)。 – BoltClock 2011-01-27 14:47:11

+0

通常隐藏它不会留下空隙。 – 2011-01-27 14:56:06

回答

1

你可以使用.clone?所以:

<ul id="firstlist"> 
    <li>One</li> 
    <li>Two</li> 
    <li>Three</li> 
    <li>Four</li> 
</ul> 

<ul id="secondlist"> 
    <li>One</li> 
    <li>Two</li> 
    <li>Three</li> 
</ul> 

jquery的:

var object = $('#firstlist > li :last ').clone(); 
$('#secondlist').append(object); 
$('#firstlist > li :last ').destroy(); 

显然可以互换本轮将其添加到第一个列表,而是让你可以使用多种方式的位置,我可能会做:

$('#firstlist').children('li').each(function(i){ 

}); 

,并用 “我” 来获得位置。您可以附加一个给定的对象之后,再这样:

$('#firstlist').children('li').each(function(i) 
{ if(i== 4){ $(this).append(object).after(this) } 
+0

使用编辑器上方的“{}”按钮。或者选择你想转换的文本,然后按ctrl + k。 – 2011-01-27 14:54:34

1

继承人我的出价:

  • 可以通过单击在列表1一个元素,它会隐藏实例,并追加克隆到列表-2
  • 点击在列表2将其返回到列表1,在同一位置它是从哪里来的项目。
  • 点击“原创要素”在列表2不会复制到列表1

HTML:

<ul id="list-1"> 
    <li>One</li> 
    <li>Two</li> 
    <li>Three</li> 
    <li>Four</li> 
    <li>Five</li> 
</ul> 
<ul id="list-2"></ul> 

的JavaScript:

var $list1 = $('#list-1'); 
var $list2 = $('#list-2'); 
$list1.children('li').each(function(i,e){ 
    var ulId = $(this).closest('ul').attr('id'); 
    $(this).attr('li-id',ulId+'_'+i); 
}).click(function(e){ 
    if ($list2.find('li[li-id="'+$(this).attr('li-id')+'"]').length == 0){ 
     var liClone = $(this).clone(); 
     liClone.click(function(e){ 
      var elId = $(this).attr('li-id'); 
      $list1.find('li[li-id="'+elId+'"]').show(); 
      $(this).remove(); 
     }); 
     $list2.append(liClone); 
    } 
    $(this).hide(); 
}); 

小提琴:http://www.jsfiddle.net/vgx23/1/

相关问题