@Norum

Как сделать так, чтобы событие происходило при нажатии на родительский элемент?

у меня есть секция .facilities и внутри есть блок .facilities-block внутри которого находятся еще два блока - .sidebar и .picture. В .sidebar расположен ul.sidebar-menu, а в блоке .picture блоки с картинками. При нажатии на один из пунктов li внутри ul.sidebar-menu в блоке .picture отображается блок с картинкой, который соответствует нажатому пункту меню. Проблема такая- отображение нужного блока в .picture осуществляется только когда я нажму именно на ссылку внутри li, а мне надо, чтобы работало когда я нажимаю и на li, в котором находится сама ссылка.

Весь код https://jsfiddle.net/79sxy1ok/

Сам сайт ch38740.tmweb.ru

610bff4782e8e801852202.jpeg

<section class="facilities">
        <div class="wrapper">
            <div class="content">
                <div class="forehead">
                    Our Facilities
                </div>
            </div>
            <h3>All facilities are designed to<br>meet all your needs</h3>
            <div class="facilities-block">
                <div class="sidebar">
                    <ul class="sidebar-menu">
                        <li id="parking"><a href="#">Spacious parking area</a></li>
                        <li id="comfortable"><a href="#">Comfortable spaces</a></li>
                        <li id="cozy"><a href="#">Cozy cafe</a></li>
                        <li id="playground"><a href="#">Child playground</a></li>
                        <li id="outdoor"><a href="#">Outdoor spaces</a></li>
                    </ul>
                </div>
                <div class="picture">
                    <div class="parking"><img src="img/parking.jpg " alt="1"></div>
                    <div class="comfortable invisible"><img src="img/comfortable.jpg" alt="2"></div>
                    <div class="cozy invisible"><img src="img/cozy.jpg" alt="3"></div>
                    <div class="playground invisible"><img src="img/playgrounds.jpg" alt="4"></div>
                    <div class="outdoor invisible"><img src="img/outdoor-spaces.jpg" alt="5"></div>
                </div>
            </div>
        </div>
    </section>


.facilities h3 {
  margin-bottom: 56px;
}
.facilities-block {
  display: flex;
  justify-content: space-between;
}
.facilities-block .sidebar {
  width: 30%;
  margin-top: 20px;
}
.facilities-block .sidebar li {
  cursor: pointer !important;
  padding: 24px;
  font-size: 20px;
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  transition: 0.3s all;
  box-sizing: border-box;
  max-width: 270px;
  width: 100%;
}
.facilities-block .sidebar li:hover,
.facilities-block .sidebar li:visited {
  background-color: #ff5722 !important;
}
.facilities-block .sidebar li a {
  color: black;
  transition: 0.3s;
}
.facilities-block .sidebar li:hover a {
  color: #fff;
}
.facilities .invisible {
  display: none;
}
.facilities .visible {
  display: block;
}
.facilities .click {
  background-color: #ff5722;
}


document.querySelector('ul.sidebar-menu').addEventListener("click", function(e) {
        e.preventDefault();
        if (e.target.tagName == 'A'){
          let clickedId = e.target.parentNode.id;
          let divs = document.querySelectorAll('div.picture>div');
          divs.forEach((el) => {
             el.classList.remove('visible');
             el.classList.add('invisible');
          });
         let targertEl = 'div.picture>div.' + clickedId;
         document.querySelector(targertEl).classList.add('visible');
       }
    });


    $('.sidebar-menu li').click(function(event) {
        $(this).addClass('click');
         $(".sidebar-menu li").not(this).removeClass("click");
    });
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект