Кто "дальний родитель", и кто "потомок":
const ancestorSelector = 'селектор дальнего родителя';
const descendantSelector = 'селектор потомка';
Если клики по вложенным элементам "потомка" учитывать не надо:
document.addEventListener('click', ({ target: t }) => {
if (t.matches(descendantSelector)) {
const ancestor = t.closest(ancestorSelector);
if (ancestor) {
ancestor.remove();
}
}
});
Если интересуют все клики внутри "потомка", в том числе и по его потомкам:
document.addEventListener('click', e => {
const descendant = e.target.closest(descendantSelector);
if (descendant) {
const ancestor = descendant.closest(ancestorSelector);
if (ancestor) {
ancestor.remove();
}
}
});
UPD.
Наконец-то дождались:
document.addEventListener('click', ({ target: t }) =>
t.matches(descendantSelector) &&
t.closest(ancestorSelector)?.remove()
);
document.addEventListener('click', e => {
e.target.closest(descendantSelector)?.closest(ancestorSelector)?.remove();
});