Как сделать так, чтоб разворачивающиеся элементы закрывались после клика по следующему элементу?

Есть такой код :

   <div class="toogle">
       <? $index = 1;?>
           <?foreach ($arResult['DELIVERY_TYPES'] as $deliveryType):?>
                <section class="toggle" id="delivery-type-<?= $index ?>">
                     <label><?= $deliveryType['NAME'] ?></label>
                         <div class="toggle-content">
                              <?= $deliveryType['DETAIL_TEXT'] ?>
                         </div>
                </section>
                <? $index++; ?>
          <?endforeach;?>
   </div>

И элементы на странице раскрываются по клику и закрываются по повторному клику, то есть самому section задаётся класс active, а контенту задаётся свойство disolay:block, как я понял, это какой-то стандартный функционал jquery, но дело в том, что мне нужно сделать так, чтобы если один элемент выбран, и после этого я выбираю другой, предыдущий должен сворачиваться. Попробовал написать такой код :

$(document).ready(function(){
    $('.toggle').click(function(){
        let togg = $('.toggle');
        $.each(togg, function (e) {
            if($(e).not($(this))){
                $(e).removeClass('active').children('.toggle-content').hide();
            }
        })
    })
})

Но не работает.. в общем логика такая, что когда мы кликаем по элементу, всем кроме этого элемента нужно удалить класс active а дочерним элементам сделать display: none


Ответы (1 шт):

Автор решения: NoSkill

Вот пример, как это можно сделать:

var $toggle = $('.toggle');
$toggle.children('.head').on('click', function() {
  $parent = $(this).parent();
  $toggle.not($parent).removeClass('active').children('.foot').slideUp(300);
  $parent.toggleClass('active').children('.foot').slideToggle(300);
});
.toggle {
  margin-bottom: 20px;
}

.toggle .head {
  cursor: pointer;
  font-weight: bold;
}
.toggle.active .head {
  color: red;
}

.toggle .foot {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="toggle">
  <div class="head">Tip 1</div>
  <div class="foot">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam gravida posuere condimentum. Aliquam vel tortor fringilla, lacinia risus vitae, vehicula augue. Donec sit amet ipsum in lorem cursus pulvinar a in metus. Pellentesque ac ipsum nulla.</div>
</div>
<div class="toggle">
  <div class="head">Tip 2</div>
  <div class="foot">Proin volutpat maximus eros, in lobortis ante. Morbi varius malesuada felis, id porta dolor imperdiet ut. Cras gravida tincidunt dictum. Donec egestas, risus at sagittis fermentum, orci urna ullamcorper massa, non facilisis nisl ex at nibh.</div>
</div>
<div class="toggle">
  <div class="head">Tip 3</div>
  <div class="foot">Добро пожаловать! Это Youtube-канал Юлии Медузы.</div>
</div>

→ Ссылка