Существует множество способов сделать это.Вы упомянули о желании .remove()
против .hide()
.Вы также хотите восстановить содержимое позже verus .show()
.
Рассмотрите следующий пример.
$(function() {
function saveHtml(item) {
var h = item.prop("outerHTML");
item.parent().data("lastChild", h);
}
function restoreLast(lObj) {
var h = lObj.data("lastChild");
if (h != undefined) {
$(h).appendTo(lObj);
}
}
function addTom(lObj) {
var li = $("<li>", {
id: "tomato-" + ($("li", lObj).length + 1),
class: "image item"
}).appendTo(lObj);
$("<img>", {
src: "https://i.imgur.com/ROLJaSi.jpg"
}).appendTo(li);
}
function removeLast(lObj) {
saveHtml($("li:last-child", lObj));
$("li:last-child", lObj).remove();
}
$("#toggle-tomato").click(function() {
var t = $(this).text();
if (t.indexOf("Hide") >= 0) {
// Action: Hide Last Tomato
removeLast($("#image-list"));
$(this).text("Show Last Tomato");
} else {
//Action: Show Last Tomato
restoreLast($("#image-list"));
$(this).text("Hide Last Tomato");
}
});
$("#add-tomato").click(function() {
addTom($("#image-list"));
});
});
#image-list {
padding: 0;
margin: 0;
list-style: none;
}
#image-list .item {
padding: .25em;
}
#image-list .image img {
width: 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="toggle-tomato">Hide Last Tomato</button> <button id="add-tomato">Add Tomato</button>
<ul id="image-list">
<li id="tomato-1" class="image item"><img src="https://i.imgur.com/ROLJaSi.jpg"></li>
</ul>
Удаление объекта jQuery очень просто с помощью .remove()
.Если вы хотите вернуть что-то после того, как это будет удалено, вы должны знать, что это было.Это означает сохранение HTML или шаблона удаляемого элемента где-либо.Поскольку мы работаем со списком, мы можем просто заполнить его списком.Я использовал .data()
, чтобы привязать его к родительскому элементу.
Вы можете адаптировать его для работы разными способами, так же как и в большинстве jQuery, вы хотите иметь функции Setter и Getter (Show / Hide).Поиграйте с ним и проверьте его в своем браузере.Вы увидите, что предмет удален из DOM, но возвращен обратно.Все с использованием одной и той же кнопки.
Предостережение : добавьте помидор, скройте его, добавьте еще один помидор и восстановите последний помидор.Что происходит?
Ничего серьезного, но у вас будет два элемента списка с id
, которые tomato-2
.Вы можете установить глобальную переменную, чтобы вести подсчет, и когда вы добавляете новую, используйте ее вместо числа элементов списка.
Надеюсь, это поможет.