设置Bootstrap折叠以根据条件默认打开元素

问题描述 投票:0回答:1

我正在制作一个FAQ页面,并将问题类别作为崩溃标题和问题作为正文进行自举崩溃。 我对索引和问题显示页面使用相同的折叠,我传递一个局部变量local: { display: boolean }来区分。

我遍历类别集合以使每个表行 <% @categories.each_with_index do |category, index| %>

我在类中有条件和触发元素的aria扩展: class='<%= "collapsed" if !display || category != @question.category %>' aria-expanded='<%= category == @question.category %>' 并且在目标的类中 class='collapse <%= "show" if display && category == @question.category %>'

页面加载正确的行打开但触发时不会关闭。

ruby-on-rails ruby-on-rails-5 erb
1个回答
1
投票

一切都在Bootstrap documentation中描述

要实现您的需求,您必须:

  1. 对于按钮/标题: 设置data-toggle="collapse" 如果必须隐藏目标的内容,则设置aria-expanded="false" 如果必须显示目标的内容,则设置aria-expanded="true"
  2. 对于目标: 如果必须隐藏目标,请设置class="collapse" 如果必须显示目标,请设置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>
© www.soinside.com 2019 - 2024. All rights reserved.