Вот оба варианта:
document.querySelector('button').addEventListener('click', () => {
alert(1);
});
document.addEventListener('click', (e) => {
if (e.target.closest('button')) {
alert(1);
}
});
Можно ли злоупотреблять вторым вариантом, возможно есть более правильные варианты решения проблемы добавления обработчиков на элементы, которые могут быть на странице, могут не быть или будут добавлены в будущем.
Вот в таком виде:
document.querySelector('button').addEventListener('click', () => {
alert(1);
});
document.querySelector('button2').addEventListener('click', () => {
alert(1);
});
document.querySelector('button3').addEventListener('click', () => {
alert(1);
});
document.addEventListener('click', (e) => {
if (e.target.closest('button')) {
alert(1);
}
});
document.addEventListener('click', (e) => {
if (e.target.closest('button2')) {
alert(1);
}
});
document.addEventListener('click', (e) => {
if (e.target.closest('button3')) {
alert(1);
}
});