как удалить информацию с помощью detach? - PullRequest
0 голосов
/ 27 октября 2011

Я пытаюсь удалить область моего сайта с помощью detach, потому что я собираюсь использовать ее снова, это то, что я кодирую в HTML

<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 оdetach в замешательстве http://api.jquery.com/detach/ и я хочу простой способ сделать это, я также нашел этот пост здесь Как мне отменить .detach ()? , но я не заставляю его работать так, как яхочу.

Мой код удаляет мой контент нормально, но я не знаю, как его вернуть.Любая помощь, пожалуйста?

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Вам уже был дан ответ о том, почему вы не можете вернуть свои элементы с помощью detach, но более простое решение проблемы, описанной в вашем примере, будет использовать hide и appendTo:

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

Это работает, потому что appendTo будет перемещать элемент, если он уже существует в DOM (что в этом случае все еще происходит, потому что hide просто скрывает его, а нена самом деле удаляя его).Это также устраняет необходимость в потенциально глобальной переменной для хранения отдельного элемента.

Если #containerShow ничего не делает, кроме предоставления места для возврата содержимого, вы можете избавиться от него и просто использовать show вместо:

$("#show").click(function(){   
   $("#container").show();
});
0 голосов
/ 27 октября 2011

Вы должны где-то хранить его, то есть в переменной:

var element;

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

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