TransWikia.com

Показывать и скрывать только нужный блок JS

Stack Overflow на русском Asked by WindCrack on November 22, 2021

Есть задача, у меня есть 4 или более блока одинаковых, в одном блоке span, в другом контент. При нажатии в первом блоке на span должен появиться контент во втором, при нажатии на третий, контент появляется в четвертом.

На данный момент получилось, что при нажатии на любой блок появляется весь контент:

function showSettings (){
    document.querySelector('body').addEventListener('click', (e)=>{
        let target = e.target;
        const items = document.querySelectorAll('.a-content'),
              plus = target.classList.contains('plus-on-settings');
        if(plus){
            $(items).toggleClass('hide');
        }
    })
}

showSettings();

Как реализовать, чтобы по клику на первый span открылся контент второго блока, а при клике на третий открылся контент четвертого блока?

Ссылка на CodePen

One Answer

Добавил несколько новых строчек в Ваш пример на CodePen, теперь все работает:

function showSettings() {
  document.querySelector("body").addEventListener("click", (e) => {
    const target = e.target
    const plus = target.classList.contains("plus-on-settings")
    if (plus) {
      const details = target.closest(".a").nextElementSibling.querySelector(".a-content")
      details.classList.toggle("hide")
    }
  })
}

showSettings()
.hide {
  display: none;
}

.a {
  margin-block-end: 15px;
}

span {
  border: solid 1px red;
  padding: 5px;
  border-radius: 5px;
}
<div class="content">
  <div class="a">
    <span class="plus-on-settings">+</span>
  </div>
  <div class="a">
    <div class="a-content hide">
      Далеко-далеко за словесными горами в стране.
    </div>
  </div>
  <div class="a">
    <span class="plus-on-settings">+</span>
  </div>
  <div class="a">
    <div class="a-content hide">
      Далеко-далеко за словесными горами в стране.
    </div>
  </div>
  <div class="a">
    <span class="plus-on-settings">+</span>
  </div>
  <div class="a">
    <div class="a-content hide">
      Далеко-далеко за словесными горами в стране.
    </div>
  </div>
  <div class="a">
    <span class="plus-on-settings">+</span>
  </div>
  <div class="a">
    <div class="a-content hide">
      Далеко-далеко за словесными горами в стране.
    </div>
  </div>
</div>

Answered by Vasily on November 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP