JavaScript contains() — чи міститься вузол усередині


Метод contains() перевіряє, чи є вузол нащадком цього елемента, і повертає true або false.

автор: NagarD

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

Головне застосування — клік поза елементом: закрити випадне меню, коли клікнули будь-де, крім нього самого. Ловимо клік на document і питаємо, чи не всередині меню він стався.

Одна тонкість, яка часом рятує, а часом дивує: елемент містить сам себеmenu.contains(menu) дає true.

Для перевірки «чи збігається елемент або його предок із селектором» зручніший closest() — він шукає вгору по дереву й одразу віддає знайдений елемент.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
contains 1+ 1+ 1+ 7+ 12+ 9+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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