2011-10-26 52 views
0

我想是因爲我有心靈再次使用它分離,除去我的網站的一個區域,這就是我在HTML如何使用detach刪除信息?

<div id="container"> 
<p>Hello</p> 
</div> 
<div id="containerShow"></div> 

<a href="#" id="remove">Remove</a> | <a href="#" id="show">Show</a> 

編碼,這是我的Jquery

$("#remove").click(function(){ 
    $("#container").detach(); 
}); 

$("#show").click(function(){ 
    $("#container").detach().appendTo("#containerShow"); 
}); 

什麼是應該做的是刪除div容器,當點擊鏈接「刪除」,並帶回相同的信息,當點擊鏈接「顯示」 我知道這看起來很簡單,但在jQuery關於分離的文檔是困惑http://api.jquery.com/detach/我想要一個簡單的方法來做到這一點,我也在這裏找到這個職位How to I undo .detach()?但我不會讓它工作,因爲我想。

我的代碼移除了我的內容,但我不知道如何恢復。 請幫忙嗎?

回答

0

你必須從某個地方拿着它,即一個變量:

var element; 

$("#remove").click(function(){ 
    element = $("#container").detach(); // detach and store in variable 
}); 

$("#show").click(function(){ 
    element.appendTo("#containerShow"); // restore stored element 
}); 
1

你已經給出了答案,爲什麼你不能回來使用detach你的元素,但一個簡單的解決在你的例子那樣的問題是使用hideappendTo

$("#remove").click(function(){ 
    $("#container").hide(); 
}); 
$("#show").click(function(){ 
    $("#container").appendTo("#containerShow"); 
}); 

這工作,因爲如果它已經在DOM存在(在這種情況下,它仍然沒有appendTo將移動元素,因爲hide只是隱藏它,而不是實際刪除它)。它也不需要潛在的全局變量來存儲分離的元素。

如果#containerShow沒有做任何事情,除了提供一個地方放後面的內容,你可以擺脫它,只是使用show代替:

$("#show").click(function(){ 
    $("#container").show(); 
});