Есть ли по дефолту функция, которая скажет что блок в ссылке

В js предусмотренная возможность пройтись по дереву выше, до первого блока с тегом 'a'?


Ответы (2 шт):

Автор решения: Grundy

closest ищет первый элемент удовлетворяющий селектору

const el = document.getElementById("div-03");

// the closest ancestor with the id of "div-02"
console.log(el.closest("#div-02")); // <div id="div-02">

// the closest ancestor which is a div in a div
console.log(el.closest("div div")); // <div id="div-03">

// the closest ancestor which is a div and has a parent article
console.log(el.closest("a > div")); // <div id="div-01">

// the closest ancestor which is not a div
console.log(el.closest("a[href]")); // <a>
<a href="#">
  <div id="div-01">
    Here is div-01
    <div id="div-02">
      Here is div-02
      <div id="div-03">Here is div-03</div>
    </div>
  </div>
</a>

→ Ссылка
Автор решения: Stepan Roze

Как найти ближайшего родительского элемента с тегом 'a' в дереве DOM, используя цикл while?

// Универсальный метод поиска ближайшего родительского элемента с тегом 'a' с использованием цикла while.
// Этот метод работает даже в старых браузерах, которые не поддерживают метод closest.

// Начинаем с выбранного элемента
let element = document.querySelector('your-element-selector');

// Ищем ближайшего родителя с тегом 'a'
while (element) {
    // Проверяем, является ли текущий элемент ссылкой
    if (element.tagName.toLowerCase() === 'a') {
        console.log('Найден ближайший родитель с тегом a:', element);
        break;
    }
    // Переходим к родительскому элементу
    element = element.parentElement;
}

// Если мы вышли из цикла без нахождения ссылки
if (!element) {
    console.log('Родитель с тегом a не найден.');
}

→ Ссылка