Если структура всегда одинакова, вы можете просто использовать Node.parentElement
, чтобы перейти туда, начиная со ссылки на <button>
:
document.addEventListener('click', ({ target }) => {
if (target.tagName !== 'BUTTON') return;
console.log(target.parentElement.outerHTML);
});
<div class="div"><button type ="submit">a</button></div>
<div class="div"><button type ="submit">b</button></div>
<div class="div"><button type ="submit">c</button></div>
В качестве альтернативы, если структура может отличаться для разных кнопок, вам нужно что-то вроде jQuery s .closest()
. Вы можете реализовать нечто подобное, используя al oop или рекурсивную функцию и Element.matches()
, если вы не используете jQuery:
function closest(element, selector) {
if (!element || element === document) return null;
if (element.matches(selector)) return element;
return closest(element.parentElement, selector);
}
document.addEventListener('click', ({ target }) => {
if (target.tagName !== 'BUTTON') return;
console.log(closest(target, '.div').outerHTML);
});
<div class="div"><button type ="submit">a</button></div>
<div class="div"><span><button type ="submit">b</button></span></div>
<div class="div"><span><span><button type ="submit">c</button></span></span></div>