Я пытаюсь сгенерировать новую предустановленную кнопку, когда кнопка сбрасывается в вызове div "timeslot", я не знаю, как это сделать, поэтому я сделал вызов функции "init ()", которая удаляет все кнопки в списке сгенерируйте все новые предустановленные кнопки. Однако это не хороший способ создать новую кнопку, удалив все кнопки в списке и сгенерировав все кнопки снова. Ниже приведен мой код.
HTML
таблица стилей для временного интервала
<style type="text/css">
.timeSlot{
width: 100%;
height: 3rem;
border: 1px solid rgb(131, 100, 100);
}
</style>
Основной код для html Я также использую некоторые стили (для кнопок) из начальной загрузки
<div class="timeSlot">
</div>
<div class="timeSlot">
</div>
<div class="timeSlot">
</div>
<div class="list">
<input type="text" placeholder="Add New Events">
<div class="preset"><button class="add btn btn-primary"><span><i class="fa fa-trash"></i></span>Eat</button></div>
<div class="preset"><button class="add btn btn-success"><span><i class="fa fa-trash"></i></span>Workout</button></div>
<div class="preset"><button class="add btn btn-warning"><span><i class="fa fa-trash"></i></span>Sleep</button></div>
<div class="preset"><button class="add btn btn-info"><span><i class="fa fa-trash"></i></span>Laundry</button></div>
<div class="preset"><button class="add btn btn-dark"><span><i class="fa fa-trash"></i></span>Study</button></div>
</div>
Javascript
$("button").draggable({cancel:false ,cursor: "crosshair", revert: "invalid"});
В поле ввода генерируются новые кнопки путем ввода текста
$("input[type='text']").keypress(function(event){
if (event.which === 13) {
var todoText = $(this).val();
$(this).val("");
$(".list").append("<div class=\"preset\"><button class=\"add btn btn-secondary\"><span><i class=\"fa fa-trash\"></i></span> " + todoText + "</button></div>");
$("button").draggable({cancel:false ,cursor: "crosshair", revert: "invalid"});
}
});
Начальная функция
function init(){
$(".list").find(".preset").remove();
$(".list").append("<div class=\"preset\"><button class=\"add btn btn-primary\"><span><i class=\"fa fa-trash\"></i></span>Eat</button></div><div class=\"preset\"><button class=\"add btn btn-success\"><span><i class=\"fa fa-trash\"></i></span>Workout</button></div><div class=\"preset\"><button class=\"add btn btn-warning\"><span><i class=\"fa fa-trash\"></i></span>Sleep</button></div><div class=\"preset\"><button class=\"add btn btn-info\"><span><i class=\"fa fa-trash\"></i></span>Laundry</button></div><div class=\"preset\"><button class=\"add btn btn-dark\"><span><i class=\"fa fa-trash\"></i></span>Study</button></div>");
$("button").draggable({cancel:false ,cursor: "crosshair", revert: "invalid"});}
Функция сброса
$(".timeSlot").droppable({ accept: ".add",
drop: function(event, ui) {
console.log("drop");
$(this).removeClass("border").removeClass("over");
var dropped = ui.draggable;
var droppedOn = $(this);
$(dropped).detach().css({top: 0,left: 0}).appendTo(droppedOn);
init();
},
over: function(event, elem) {
$(this).addClass("over");
console.log("over");
}
,
out: function(event, elem) {
$(this).removeClass("over");
}
});
Таким образом, проблема в том, что когда я использую ввод для генерации некоторых новых кнопок, если я использую какие-либо кнопки для удаления, остальные новые кнопки генерации исчезают. Я ищу способ сохранить кнопки (в том числе новые кнопки генерации), когда кнопка перетаскивается в списке или выпадает в div. Очевидно, начальная функция не является хорошим способом сделать это, потому что есть некоторые логические ошибки (новые кнопки генерации исчезают, когда другая кнопка отбрасывается). Может кто-нибудь помочь мне разобраться?
Небольшое редактирование, поэтому я хочу, чтобы список автоматически генерировал те же кнопки, когда та же кнопка перетаскивалась или опускалась. Например, когда кнопка «Eat» перетаскивается или опускается в поле временного интервала, список автоматически генерирует новую кнопку «Eat» в списке, поэтому я могу добавить еще одну кнопку «Eat» в поле временного интервала, не вводя «Eat» в поле «Eat». вход для создания кнопки «Ешьте».