我正在努力制作一个常见问题解答页面,并以问题的类别作为折叠标题,将问题类别作为正文进行引导折叠。
我对索引和问题显示页面使用相同的折叠,并且我正在传递一个局部变量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 %>'
的类中
页面加载时打开了正确的行,但在触发时不会关闭。
所有内容都在引导文档中描述
要实现您的需求,您必须:
- 对于按钮/标题:
- 设置
data-toggle="collapse"
- 如果必须隐藏目标的内容,则设置
aria-expanded="false"
- 如果必须显示目标的内容,则设置
aria-expanded="true"
- 设置
- 对于目标:
- 设置
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>