Задать вопрос
let_NIK
@let_NIK
веб розробка

Как скрыть блок, внутри которого находится блок с определённым классом?

Есть вот такая конструкция:

<div class="item">
  <div>
    <div></div>
  </div>
</div>
<div class="item">
  <div>
    <div class="hidden"></div>
  </div>
</div>

Нужно скрыть блок .item в котором находится блок .hidden.
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега CSS
О каких классах идёт речь:

const outerClass = 'item';
const innerClass = 'hidden';

Как скрыть элемент:

const hide = el => el.style.display = 'none';
// или
const hide = el => el.style.setProperty('visibility', 'hidden');
// или
const hide = el => el.style.cssText += 'opacity: 0';
// или
const hide = el => el.setAttribute('style', 'transform: scale(0)');
// или
const hide = el => el.hidden = true;

Скрываем:

document.querySelectorAll(`.${innerClass}`).forEach(n => {
  if (n = n.closest(`.${outerClass}`)) {
    hide(n);
  }
});

// или

for (const n of document.getElementsByClassName(outerClass)) {
  if (n.querySelector(`.${innerClass}`)) {
    hide(n);
  }
}

UPD. Наконец-то дождались, теперь js тут использовать необязательно:

.item:has(.hidden) {
  display: none;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы