Чтобы сделать это напрямую, без jQuery или чего-либо и без чрезмерного усложнения, вы можете сделать что-то вроде этого:
const itemsList = document.querySelectorAll('.items');
const onClick = () => {
console.log('clicked');
itemsList.forEach(item => {
item.removeEventListener('click', onClick);
});
};
itemsList.forEach(item => {
item.addEventListener('click', onClick);
});
В основном вы сохраняете ссылку на функцию щелчка, а сама функция удаляет сам из всех узлов в списке.
Если вы хотите узнать, какой элемент был нажат, вы можете добавить параметр в функцию onClick
, которая будет событием нажатия, из которого вы можете получить элемент по щелчку, например, так:
const itemsList = document.querySelectorAll('.items');
const onClick = event => {
const clickedItem = event.target
console.log('clicked on ' + clickedItem.textContent);
itemsList.forEach(item => {
item.removeEventListener('click', onClick);
});
};
itemsList.forEach(item => {
item.addEventListener('click', onClick);
});
Что-то вроде этих строк позволит вам получить ссылку на то, какой элемент был фактически нажат.