function delegate(parent, eventType, selector, handler) {
parent.addEventListener(eventType, (event) => {
const target = event.target.closest(selector);
if (target && parent.contains(target)) {
handler.call(target, event);
}
});
}
// Usage
const list = document.querySelector('#item-list');
delegate(list, 'click', '.delete-btn', function (e) {
e.preventDefault();
this.closest('li').remove();
});
delegate(list, 'click', 'a.item-link', function (e) {
console.log('Item clicked:', this.dataset.id);
});
Create a free account and build your private vault. Share publicly whenever you want.