Настройка свертывания Bootstrap для открытия элемента по умолчанию в зависимости от условия - PullRequest
0 голосов
/ 30 августа 2018

Я работаю над созданием страницы с часто задаваемыми вопросами, и у меня есть загрузочный коллапс с категориями вопросов в виде заголовков и вопросов в виде тела.
Я использую один и тот же коллапс как для страниц отображения индекса, так и для страниц с вопросами, и я передаю локальную переменную local: { display: boolean } для дифференциации.

Я перебираю коллекцию категорий, чтобы сделать каждую строку таблицы
<% @categories.each_with_index do |category, index| %>

У меня есть условные выражения в классе и расширенном арии триггерного элемента:
class='<%= "collapsed" if !display || category != @question.category %>'
aria-expanded='<%= category == @question.category %>'
И в классе цели
class='collapse <%= "show" if display && category == @question.category %>'

Страница загружается с правильной открытой строкой, но не закрывается при запуске.

1 Ответ

0 голосов
/ 30 августа 2018

Все описано в документации Bootstrap

Чтобы достичь того, что вам нужно, вам необходимо:

  1. Для кнопок / заголовков:
    1. набор data-toggle="collapse"
    2. если содержимое цели должно быть скрыто, установите aria-expanded="false"
    3. если необходимо отобразить содержимое цели, установите aria-expanded="true"
  2. Для целей:
    1. установить class="collapse" если цель должна быть скрыта
    2. установить class="collapse show", если цель должна отображаться

Вот пример

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<p>
  <a class="btn btn-primary" data-toggle="collapse" href="#multiCollapseExample1" role="button" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
  <button class="btn btn-primary collapsed" type="button" data-toggle="collapse" data-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
</p>
<div class="row">
  <div class="col">
    <div class="collapse show multi-collapse" id="multiCollapseExample1">
      <div class="card card-body">
        First element content (displayed by the default)
      </div>
    </div>
  </div>
  <div class="col">
    <div class="collapse multi-collapse" id="multiCollapseExample2">
      <div class="card card-body">
        Second element content
      </div>
    </div>
  </div>
</div>
...