当前位置: 首页 > 知识库问答 >
问题:

Bootstrap4 Accordion-在不使用JavaScript的情况下全部折叠

丌官浩旷
2023-03-14

以下是Bootstrap4文档中的代码片段,位于:https://getbootstrap.com/docs/4.0/components/collapse/

<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" type="button" data-toggle="collapse" data-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
</p>
<div class="row">
  <div class="col">
    <div class="collapse multi-collapse" id="multiCollapseExample1">
      <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>
  </div>
  <div class="col">
    <div class="collapse multi-collapse" id="multiCollapseExample2">
      <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>
  </div>
</div>

我正在尝试在我的引导手风琴中实现类似的折叠/扩展所有功能。我发现这个实现并没有按我的预期工作。这只是将面板的状态更改为与当前相反的状态。

例如:

面板1:隐藏

面板2:隐藏

面板3:隐藏

变成

面板1:可见

面板2:可见

面板3:可见

这很好,但举个例子来说,各州是这样的:

面板1:隐藏

面板2:可见

面板3:隐藏

我希望崩溃/展开全部使它们全部隐藏或全部可见,但它实际上变成了:

面板1:可见

面板2:隐藏

面板3:可见

有没有一种使用Bootstrap4的方法可以打开或关闭所有面板?

E:

因此,如果要折叠的所有面板都具有class=“multi-collapse”,我可以使用切换按钮中的data target=“.multi-collapse”来折叠它们。

当面板折叠时,其类为“multi-collapse collapse”,当其可见时,其类为“multi-collapse collapse show”。如果我可以为数据目标指定多个类,我可以根据条件使目标显示为多折叠折叠或多折叠折叠…有没有任何方法可以为数据目标指定多个类?

即使有一种方法可以折叠手风琴中的每个面板,也能达到效果。

E2:

多亏了齐姆我才得到了我想要的

<input type="button" class="btn btn-primary" data-toggle="collapse" [attr.data-target]="allExpanded ? '.multi-collapse:not(.show)': '.multi-collapse.show'" (click)="allExpanded = !allExpanded" [attr.value]="allExpanded ? 'Collapse All': 'Expand All'" >  

这是一个角度项目,因此我能够使用组件文件中的布尔变量跟踪单个按钮的状态。

共有1个答案

刘京
2023-03-14

不使用JavaScript的唯一方法是有两个单独的按钮。data-Target将只针对打开的。multi-collapse.show,或关闭的. multi-崩溃:不是(. show)面板...

<button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse:not(.show)">Show all</button>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse.show">Hide all</button>

演示

为了用一个按钮实现这一点,您需要JS来跟踪折叠面板的状态。

 类似资料:
  • 我实现了一个在另一个堆栈溢出post上找到的方法,允许使用jQuery展开和折叠表行。该方法很简单,工作正常,但我遇到了缺省情况下扩展行的问题。我如何使这些在页面加载时显示为折叠的,以便用户可以决定展开哪些? 作为一个附带说明,有没有什么方法使折叠/展开看起来更平滑,而不是只是瞬间打开或关闭? 谢谢!

  • 问题内容: 是否可以在不完全禁用JavaScript的情况下禁用AJAX? 问题答案: 如果您使用的是Firefox,则可以使用GreaseMonkey完成此操作。(https://addons.mozilla.org/en- US/firefox/addon/748 ) GM是用于将脚本应用于您访问的部分或全部页面的框架。我有禁用google- analytics下载的GM脚本(因为它们会使速度

  • 问题内容: 很抱歉那个愚蠢的问题。如何在javascript切换大小写语言元素中为案件使用条件?像下面的示例一样,当变量<= 5和> 0 时,大小写应该匹配;但是,我的代码不起作用: 感谢您的任何建议! 问题答案: 这有效: 此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是您的case表达式必须为布尔值。 之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同

  • 问题内容: 背景 我必须对React应用程序使用内容安全策略。 原因,但是,在这里不是什么大问题,是因为我正在创建WebExtension / Browser Extension /附加组件,并且这些附件确实具有这样的内容安全策略,并且存在类似且被严格禁止的事情: 由于重大安全问题,addons.mozilla.org上列出的扩展名不允许在其CSP中使用’unsafe-eval’,’unsafe-

  • 问题内容: 我想知道是否可以在没有支持库的情况下使用FragmentStatePagerAdapter类或其等效类? 我知道如何使用本机片段代替支持库中的本机片段,许多其他类也具有类似的等效项,但是我找不到代替该类的内容。 我基本上想扩展它以便在我的适配器中使用,就像这样 问题答案: 我想您已经阅读了 docs,但以防万一: 该课程目前正在早期设计和开发中。该API可能会在以后的兼容性库更新中更改

  • 首先,如果这是一个很长的代码段,我很抱歉,但是,我想做一个模态窗口,它将你在我的用户表单中写的东西写下来,并要求你确认它。我目前正在学习Javascript,我不允许使用innerHTML,我必须动态地编写“名字”等(名字的文本),不允许只在弹出窗口内写它。我已经让大多数东西工作,但“名字”“名字”等显示为“未定义”,或者(正如你可以看到的,我在这种情况下只用名字尝试的事情)显示为“空”。 希望有