2011-01-27 64 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/

相關問題