我正在尝试删除添加到UL
的事件侦听器;这样,监听器功能将仅在首次点击时触发,并在此后清除。
有没有办法用纯js做到这一点?
var cardDeck = document.getElementById('listDeck').getElementsByTagName('li')
for (var i = 0; i < cardDeck.length; i++) {
cardDeck[i].addEventListener('click', flip, false)
}
function flip(e) {
if (e.target && e.target.nodeName == "LI") {
var firstMove = document.getElementById(e.target.id)
firstMove.classList.add('open', 'show')
console.log(e.target.id + 'card was clicked');
}
}
最佳答案
只需将{Once:true}选项添加到事件监听器即可。无需为此编写代码。只需尝试这些
cardDeck[i].addEventListener('click', flip, {once:true} )
这是jsfiddle link
参考链接。Here
PS:
将evenListener添加到每个元素的方式效率不高。如果可能的话,请使用委派而不是冒泡。