JS метод Element.closest()


Загальний опис

Метод closest() є корисним інструментом у JavaScript, який дозволяє знаходити найближчий батьківський елемент заданого елемента в DOM-дереві. Цей метод особливо корисний, коли потрібно звернутися до контейнера або елемента, який має конкретні властивості або класи, і ці властивості або класи можуть бути декількох рівнів вглиб DOM-дерева.

Щоб використовувати метод closest(), вам потрібно мати посилання на елемент DOM, до якого хочете застосувати цей метод. Потім ви можете викликати цей метод на цьому елементі та передати йому селектор або назву тега батьківського елемента, який ви шукаєте.

// Приклад використання методу closest()
const element = document.querySelector('.child-element');
const closestContainer = element.closest('.parent-container');

У цьому прикладі ми використовуємо метод closest() для знаходження найближчого елемента з класом .parent-container, який є батьківським для елемента з класом .child-element.

Одна з основних переваг методу closest() полягає в тому, що він автоматично обходить всі батьківські елементи до тих пір, поки не знайде той, який відповідає заданому селектору або тегу. Це дозволяє легко і швидко отримувати доступ до потрібного контейнера чи елемента в DOM-структурі.

Крім того, метод closest() допомагає покращити читабельність вашого коду, оскільки ви можете здійснювати доступ до батьківських елементів без необхідності вручну проходити через весь DOM.

Наприклад, ви можете використовувати цей метод для знаходження форми, в якій знаходиться конкретний елемент введення:

// Приклад використання методу closest() для знаходження форми
const inputElement = document.querySelector('input[type="text"]');
const formElement = inputElement.closest('form');

У цьому прикладі ми знаходимо найближчий елемент <form>, який є батьківським для елемента <input type="text">. Це дозволяє нам отримати доступ до форми, до якої відноситься конкретне поле вводу.

Узагальнюючи, метод closest() є потужним і корисним інструментом у JavaScript, який спрощує доступ до батьківських елементів в DOM-структурі. Його використання допомагає зробити ваш код більш читабельним та підтримуваним, особливо при роботі зі складними DOM-структурами.

автор: Bond

Порада

Використання методу closest() дозволяє знаходити найближчий батьківський елемент до поточного елементу, який відповідає заданому CSS селектору. Для початківця важливо розуміти, що цей метод допомагає здійснювати навігацію в DOM-структурі, що може бути корисним при роботі з подіями або розміщенням елементів на сторінці.

автор: Bond
Порада

Під час використання closest() варто пам'ятати, що метод шукає батьківські елементи по DOM-дереву, починаючи з поточного елементу і переходячи вгору. Якщо потрібно знайти елементи в іншому напрямку (наприклад, вниз по DOM), варто розглянути інші методи навігації, такі як querySelector().

автор: Bond
Порада

Для досвідчених програмістів closest() може бути корисним для швидкого доступу до батьківських елементів, щоб здійснювати різноманітні маніпуляції з їх властивостями або стилями. Наприклад, якщо потрібно змінити стиль чи додати клас до контейнера, метод closest() може швидко знайти його.

автор: Bond

Синтаксис

closest(selectors)

Параметри

selectors

Рядок дійсного CSS селектора для відповідності Елементу та його предків.

автор: Bond

Повернення

element

Повертає найближчий предок елемента або сам елемент, який відповідає заданим селекторам. Якщо такий елемент відсутній, повертається значення null.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
41 35 6 28 15
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
41 41 35 9

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми використали метод closest() для знаходження найближчого батьківського елементу з ідентифікатором "parent" для елементу з ідентифікатором "child". Цей метод дозволяє легко отримувати доступ до батьківських елементів на основі їх селекторів.

HTML

<div id="parent">
    <div id="child"><span>Приклад</span></div>
</div>

JS

const childElement = document.querySelector('#child');
const parentElement = childElement.closest('#parent');

console.log(parentElement.id); // 'parent'
автор: Bond

У цьому складнішому прикладі ми використали метод closest() для знаходження найближчого контейнера з класом "container", коли користувач клікає на будь-який елемент з класом "item". Після знаходження батьківського контейнера ми додаємо або видаляємо клас "highlight" для підсвітки контейнера, щоб наголосити його. Цей приклад демонструє, як метод closest() може бути використаний для більш складних взаємодій з подіями та маніпуляціями DOM.

// HTML розмітка
// <div class="container">
//   <div class="item">
//     <span>Item 1</span>
//   </div>
//   <div class="item">
//     <span>Item 2</span>
//   </div>
//   <div class="item">
//     <span>Item 3</span>
//   </div>
// </div>

// JavaScript код
document.addEventListener("click", function(event) {
  if (event.target.classList.contains("`item`")) {
    const parentItem = event.target.closest("`div.container`");
    parentItem.classList.toggle("`highlight`");
  }
});
автор: Bond

У цьому прикладі ми маємо два елементи <div> з класом item всередині контейнера <div> з класом container. При кліку на будь-який з цих елементів, JavaScript використовує метод closest() для пошуку найближчого батьківського елемента з класом container. Знайдений елемент виводиться в <div> з класом output.

Користувач може взаємодіяти з прикладом, клікаючи на елементи з класом item. Це продемонструє використання методу closest() для пошуку найближчого батьківського елемента, що відповідає заданому селектору.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід