1
JavaScriptIntermediate#browser#performance
Attaching one listener to a stable parent means rows added later automatically work, memory use stays flat and you avoid rebinding after each render.
table.addEventListener('click', e => {
const btn = e.target.closest('button[data-del]');
if (btn) remove(btn.dataset.del);
});