2013-05-07 62 views
1

我正在使用insertAfter函數移動div元素的位置(和父母)。 事情是這樣的:存儲DIV元素的原始父代

$('.annotation i').click(function(){ 
    $('.annotation').find('.comment').insertAfter('#container'); 
}); 

我想知道是否有可能以某種方式與原始親本存儲,以便之後的另一個用戶動作的div元素移回原來的位置(原母公司下)。

謝謝。

+0

什麼火焰的意思是:。'$( 'yourDiv ')隱藏()的clone()appendTo(' #集裝箱 ')顯示()addClass(' 克隆');'會搶。 yourDiv,隱藏它,克隆它,追加,顯示克隆並向克隆中添加一個類(這樣你就可以在後面執行'$('。yourDiv.clone')' – RaphaelDDL 2013-05-07 14:25:49

+0

@RaphaelDDL這個元素在移動後會遭到修改。它包含一個textarea,因此我需要再次克隆它,刪除原來的一個,然後添加這個返回到原來的狀態。是不是再簡單一點呢? – Alvaro 2013-05-07 14:31:14

+1

你可以做'$( '.yourDiv')。replaceWith('。yourDiv.clone')。show();'當你需要回到第一個地方時(顯示是因爲yourDiv在我們克隆的時候被隱藏) – RaphaelDDL 2013-05-07 17:25:12

回答

2
var parent = $('.annotation').find('.comment').parent(); 

會給你的.comment類的元素的父母。

你提到存儲它的位置。你可能會發現JQuery Index有幫助。以類似的方式存儲父級索引或存儲特定.comment元素的位置以供以後使用。

1

您可以創建元素的副本,並隱藏原始:

$e = $('element'); 
$c = $e.clone(); 
$e.hide(); 

然後你就可以摧毀移動的元素,並再次顯示原始:

$e.show(); 
$c.remove(); 

或替換原有移動的一個:

$e.replaceWith($c); 

http://api.jquery.com/clone

如果原始元素有一個ID屬性,你會想更改或刪除它的克隆,以及讓所有的元素保留的唯一ID:

$c.attr('id','new-unique-string'); 
// or 
$c.removeAttr('id'); 
+0

這是克隆而不是移動它,如果有的話? – Alvaro 2013-05-07 14:26:58

+0

您根本不必存儲父項,因爲原始元素正是您離開它的地方。 – Blazemonger 2013-05-07 14:28:14

+0

@Steve如果您需要隱藏克隆並將其移回原始位置(也稱爲「將div元素移回到原始位置」,您說過),則可以保留原始位置。 – RaphaelDDL 2013-05-07 14:28:57

2

這一個存儲到原來的父級的引用使用.data()函數。 。

$('.annotation i').click(function(){ 
    $('.annotation').find('.comment').each(function() { 
     $(this).data('oparent', $(this).parent()); 
     $(this).insertAfter('#container'); 
    }); 
}); 

function anotherUserAction(comment) { 
    comment.appendTo(comment.data('oparent')); 
}