https://davidwalsh.name/event-delegate
https://developer.mozilla.org/en-US/docs/Learn/Jav...
Раздел "Event delegation"
Вам нужно слушать верхний объект и проверять наличие класса у event.target
(ниже написали, что лучше проверять target.closest если в айтеме будут span или другая верстка)
Проблемы с добавлением ивента в цикле на каждый елемент начнуться в тот момент, когда ты решишь удалять или добавлять елементы динамически через JS. Тебе нужно будет добавлять слушатель новым элементам и делать removeEventListener тем, которые удаляешь.
Если предпочитаешь добьавлять слушатель в цикле то используй не addEventListener а
element.onclick , для этих слушателей не нужно вызывать removeEventListener