Pixel Pete saysEvents bubble up the tree; delegation handles many children with one parent listener.
A click fires on the target, then bubbles up through ancestors (capturing runs top-down first). Delegation puts one listener on a parent and inspects event.target to handle any child — efficient, and it works for elements added later. It's the pattern behind dynamic lists and was a DHTML staple long before frameworks.
Power-ups you unlock
Events bubble child → ancestors
Capturing phase runs top → down first
Delegation: one parent listener, check target
Handles dynamically-added elements
Quirks Mode attacks — common mistakes
A listener per item instead of delegation
Forgetting the target check in the parent handler
stopPropagation breaking other delegated handlers
Boss battleHandle clicks on any <li> with one listener on the <ul> via delegation.