Вам уже был дан ответ о том, почему вы не можете вернуть свои элементы с помощью detach
, но более простое решение проблемы, описанной в вашем примере, будет использовать hide
и appendTo
:
$("#remove").click(function(){
$("#container").hide();
});
$("#show").click(function(){
$("#container").appendTo("#containerShow");
});
Это работает, потому что appendTo
будет перемещать элемент, если он уже существует в DOM (что в этом случае все еще происходит, потому что hide
просто скрывает его, а нена самом деле удаляя его).Это также устраняет необходимость в потенциально глобальной переменной для хранения отдельного элемента.
Если #containerShow
ничего не делает, кроме предоставления места для возврата содержимого, вы можете избавиться от него и просто использовать show
вместо:
$("#show").click(function(){
$("#container").show();
});