#javascript #jquery
#javascript #jquery
Вопрос:
Уже полночь, и это может показаться неправильным, но я постараюсь..
У меня есть два списка. Один список элементов, которые нужно сделать, а другой — готовых элементов.
У меня есть поле ввода и кнопка, которая добавляет элементы в список дел при нажатии. — Все работает нормально.
У меня есть кнопка, которая переместит все элементы в списке дел в список готовых. — Все это работает нормально, но когда я делаю это, а затем ввожу новый элемент, чтобы добавить его в список дел, теперь все это добавляется в готовый список.
Я знаю, что именно туда я сейчас его перемещаю, но я думал, что возвращаемое значение false сработает, но, увы.
$ (function (){
$("#stillToDo").sortable({
connectWith: "#finished"
});
$("#finished").sortable({
connectWith: "#stillToDo"
});
$("#newItemBtn").click(function(){
let newInput = $("#newItem").val();
$("#stillToDo").append("<li>" newInput "</li>");
$("#newItem").val("");
$("#lastUpdated").text("Last updated " Date());
})
$("#newItem").keypress(function(event){
let newInput = $("#newItem").val();
let keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
$("#stillToDo").append("<li>" newInput "</li>");
$("#newItem").val("");
$("#lastUpdated").text("Last updated " Date());
}
});
$("#allFinished").click (function(){
$("#finished").append($("#stillToDo"))
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sideBar">
<h2>D-B-To-Do</h2>
<div id="searchBar" class="input-group col">
<input class="form-control py-2" type="search" placeholder="Search your items " id="searchInput">
<span class="input-group-append">
<button class="btn btn-outline-secondary" type="button">
<i class="fa fa-search"></i>
</button>
</span>
</div>
<div class="days">
<h3>Monday</h3><hr>
</div>
<div class="days">
<h3>Tuesday</h3><hr>
</div>
<div class="days">
<h3>Wednesday</h3><hr>
</div>
<div class="days">
<h3>Thursday</h3><hr>
</div>
<div class="days">
<h3>Friday</h3><hr>
</div>
<div class="days">
<h3>Saturday</h3><hr>
</div>
<div class="days">
<h3>Sunday</h3><hr>
</div>
</div>
<div id="dayInfo" class="container col-6 row align-items-center dayInfo ">
<div class="card">
<img id="mondayImg" class="card-img-top" >
<div class="card-body">
<h3 class="card-title">Monday</h3>
<div id="subTitle" class="row">
<div class="col">
<h5>Still to do</h5>
<button id="allFinished" class="btn btn-success">Move all to finished</button><hr>
<ul id="stillToDo">
<li>test1</li>
</ul>
</div>
<div class="col">
<h5>Finished</h5><button id="allFinished" class="btn btn-danger">Remove finished</button><hr>
<ul id="finished">
<li>test2</li>
</ul>
</div>
</div>
<div id="newItemWrapper">
<input id="newItem" placeholder="Add a new item"><br>
<h6 id="newItemBtn" class="btn btn-success">Add new item</h6>
<p class="card-text"><small id="lastUpdated" class="text-muted">Last updated </small></p>
</div>
</div>
</div>
</div>
Ответ №1:
на самом деле вы добавляете полное ‘#stillToDo ul’ к ‘#finished’, вот почему вы сталкиваетесь с таким странным поведением . , , просто используйте это $ («#finished»).append($(«#stillToDo»).children()); все будет в порядке . . .
$("#allFinished").click (function(){
$("#finished").append($("#stillToDo").children());
});
надеюсь, вы поняли это и вам помогло.
Комментарии:
1. Спасибо, я сделал то же самое, только я выбрал li в ul, а не весь ul!
Ответ №2:
Для тех, кому интересно, mindnight — не лучшее время для попыток решить проблему…
Вместо того, чтобы перемещать весь список в готовую стопку, я просто перемещаю существующие элементы списка… Теперь работает отлично!