closest() Method
closest() Method
Section titled “closest() Method”Introduction
Section titled “Introduction”The closest() method traverses up the DOM tree from the current element, finding the nearest ancestor that matches a CSS selector.
Basic Usage
Section titled “Basic Usage”const element = document.querySelector('.child');
// Find nearest ancestor with class 'container'const container = element.closest('.container');
// Find nearest ancestor that's a buttonconst button = element.closest('button');Practical: Event Delegation
Section titled “Practical: Event Delegation”document.addEventListener('click', (e) => { // Find the nearest button ancestor of the clicked element const button = e.target.closest('button'); if (button) { console.log('Clicked button:', button.textContent); }});
// Works with any selectordocument.querySelector('table').addEventListener('click', (e) => { const row = e.target.closest('tr'); if (row) { console.log('Clicked row:', row.dataset.id); }});closest vs parentElement
Section titled “closest vs parentElement”| Method | Direction | Accepts Selector |
|---|---|---|
parentElement | One level up | ❌ No |
closest() | Multiple levels up | ✅ Yes |
// parentElement — only one levelelement.parentElement; // Immediate parent only
// closest — traverses up until match or rootelement.closest('.wrapper'); // Might be grandparent or furtherSummary
Section titled “Summary”closest()traverses UP the DOM tree- Returns the nearest matching ancestor or null
- Accepts any CSS selector as argument
- Essential for event delegation patterns