向文档添加事件侦听器与检查元素是否存在然后添加事件侦听器

Add event listener to the document versus check in element exists and then add event listener

我一直在寻找这个,但我没有找到答案。 我想知道 Javascript 中哪种做法更好。要添加一个仅在目标为所需目标时才有效的事件侦听器:

document.addEventListener('click', function(e){
     if(e.target && e.target.classList.contains('foo')){
                
     }
});

或者创建一个引用所需元素的变量,如果存在则添加事件侦听器

var a = document.querySelector('.foo');

if (a) {
    a.addEventListener('click', function(){

    })
}

我总是选择第一种方法,因为它也会影响动态创建的元素。我也认为你不需要条件的第一部分。我的代码如下所示:

document.addEventListener('click', function(e){
  if(e.target.id == "confirm-button"){
    // do something
  }
});