我正在尝试删除添加到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添加到每个元素的方式效率不高。如果可能的话,请使用委派而不是冒泡。

10-06 15:44