JavaScript contains() — чи міститься вузол усередині
Метод contains() перевіряє, чи є вузол нащадком цього елемента, і повертає true або false.
Загальний опис
Головне застосування — клік поза елементом: закрити випадне меню, коли клікнули будь-де, крім нього самого. Ловимо клік на document і питаємо, чи не всередині меню він стався.
Одна тонкість, яка часом рятує, а часом дивує: елемент містить сам себе — menu.contains(menu) дає true.
Для перевірки «чи збігається елемент або його предок із селектором» зручніший closest() — він шукає вгору по дереву й одразу віддає знайдений елемент.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| contains | 1+ | 1+ | 1+ | 7+ | 12+ | 9+ |
| Переглядач | ||||
|---|---|---|---|---|
| contains | yes | yes | yes | yes |
Приклади
+ запропонувати свій приклад у пісочниці
Закрити меню, якщо клікнули поза ним.
HTML
<div id="menu">
<button>Меню</button>
<ul><li>Пункт</li></ul>
</div>
JS
const menu = document.getElementById('menu');
document.addEventListener('click', event => {
// клік стався поза меню — закриваємо
if (!menu.contains(event.target)) {
menu.classList.remove('open');
}
});
// елемент містить сам себе
console.log(menu.contains(menu)); // true
Коментарі
Коментарів ще немає — будьте першим!