Проблема здесь в том, что к добавленному элементу не прикреплен прослушиватель событий, когда вы вызываете $(...).click
, он присоединяет прослушиватель событий только к существующим в данный момент элементам. Поскольку вы вызываете его, когда документ загружается, и в то время нет элементов с классом deleteButton
, он ничего не будет делать.
Вы можете решить эту проблему, переместив код удаления в свою собственную функцию и прикрепив прослушиватель события щелчка для каждого нового элемента, который вы создаете.
Чтобы сделать это эффективно, вам необходимо получить элемент, который вы создаете, вы можете сделать это так:
$(HTML Code).appendTo('#list').click(...);
Это создаст элемент из html, который вы передадите, добавите его к элементу с идентификатором list
и присоедините к нему прослушиватель события щелчка, так что в итоге получится:
var inputText;
var itemList = [];
$("#addButton").click(function() {
inputText = $("#textInput").val();
itemList.push(inputText);
$("#textInput").val("");
showItems();
});
function deleteItem(e) {
console.log(e.target.id);
}
function showItems() {
$("#list").html('');
for (var i = 0; i <= itemList.length - 1; i++) {
var html = '<div class="listelement"><p type="text" class="listItem" id="listItem ' + i + '">' + itemList[i] + '</p> <button type="button" class="deleteButton" id="' + i + '">REMOVE</button><div>';
$(html).appendTo('#list').click(deleteItem);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="headline">
<h1 id="headline">TO DO LIST</h1>
</div>
<div class="userInput">
<input type="text" id="textInput">
<button type="button" id="addButton">ADD ITEM</button>
</div>
<div class="list" id="list">
<div class="listelement" id="listelement">
</div>
</div>
</div>