Я не профессионал, но недавно я создал подобное приложение. Я разобрался после добавления нового элемента, слушатели действий их не считают. Поэтому я добавил слушатели событий в функцию создания нового элемента после добавления элемента в DOM.
Вот мое предложение
Сначала необходимо связать jQuery -3.2.1. slim.min. js в ваш проект
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
Поместите этот код в конец функции liMaker.
$('input[type="checkbox"]').click(function() {
if ($(this).is(':checked')) {
//Call your function
console.log(this.id)
}
});
При создании элемента списка присвойте каждому из них уникальный идентификатор (добавьте его в свой чекбокс). Может быть, вы можете дать им индекс массива.
createCheckBox.id ={unique id}
После того, как вы сделаете это, нажмите на флажок, чтобы вызвать вышеуказанную функцию. В этой функции this.id
является уникальным значением, которое вы задали для флажка. Затем вы можете использовать его для удаления этого индекса из вашего массива.
Второй метод (Pure JS) Дайте общее имя класса для всех флажков и уникальный идентификатор также.
const checkBoxes = document.querySelectorAll(".{common_class_name}")
for(const cb of checkBoxes){
button.addEventListener('click',function(){
let id = this.id
/*this id is the value you gave to the checkbox.
Call your deleting methods here*/
})
}
Поместите этот метод в конец вашего метода создания элемента. Это должно выполняться каждый раз, когда вы добавляете элемент.
Я скопировал ваш код, и мой метод работает нормально. Я новичок, может быть, есть лучшие способы сделать это. но мой метод работает.
Удачи