Bootstrap переключить коллапс неизвестного идентификатора - PullRequest
1 голос
/ 08 марта 2020

Я использую bootstrap, пытаясь создать data-toggle="collapse" для контейнера рядом с тем, на который я нажимаю. Поскольку я создаю этот список результатов базы данных, и он может стать большим, я не хочу тратить на него идентификаторы. Я уже пробовал что-то вроде этого:

<a class="list-group-item accordion-toggle" data-toggle="collapse" href="javascript:return $(this).next();">
<div class="card-collapse collapse in">
  <div class="card-body">
    Hello
  </div>
</div>

Я что-то здесь упускаю, так как это не работает. Любые идеи о том, как это сделать?

Обновление: Я ищу, чтобы получить href="javascript:return $(this).next();" для цели следующего элемента.

Обновление 2: Моя цель состоит в том, чтобы нажатие на ссылку переключало коллапс на <div class="card-collapse collapse in">

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Попробуйте этот простой код, он работает правильно

function doit(e){
$(e.target).next().collapse('toggle')
} 
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>


  <a class="btn btn-primary" href="javascript:void(0);" onclick="doit(event);" role="button" aria-expanded="false" aria-controls="collapseExample">
    Link with href
  </a> 
 
<div class="collapse">
  <div class="card card-body">
    Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
  </div>
</div>
0 голосов
/ 08 марта 2020

Получил решение, поместив небольшой скрипт на этой странице.

<script>
  $('.accordion-toggle').on('click', function() {
    $(this).next('div.collapse').slideToggle();
  });
</script>

Также я добавил $('.collapse').slideUp(); в качестве первой строки функции, чтобы открыть только один элемент.

$('.accordion-toggle').on('click', function() {
  if($(this).next('div.collapse').is(':hidden')) {
    $('.collapse').slideUp();
  }
  $(this).next('div.collapse').slideToggle();
});
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="list-group w-100">
  <a class="list-group-item accordion-toggle" data-toggle="collapse" href="#"><h3>Entry 1</h3></a>
  <div class="list-group-item collapse in">
    <p>Some details on entry 1.</p>
  </div>
  <a class="list-group-item accordion-toggle" data-toggle="collapse" href="#"><h3>Entry 2</h3></a>
  <div class="list-group-item collapse in">
    <p>Some details on entry 2.</p>
  </div>
  <a class="list-group-item accordion-toggle" data-toggle="collapse" href="#"><h3>Entry 3</h3></a>
  <div class="list-group-item collapse in">
    <p>Some details on entry 3.</p>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...