修改 Twitter Bootstrap 折叠插件以保持手风琴打开

Posted

技术标签:

【中文标题】修改 Twitter Bootstrap 折叠插件以保持手风琴打开【英文标题】:Modify Twitter Bootstrap collapse plugin to keep accordions open 【发布时间】:2012-04-18 16:00:22 【问题描述】:

我正在尝试修改 Bootstrap 折叠插件,以允许我指定单击手风琴(打开)是否应自动关闭手风琴中的其他项目(因此可以一次打开手风琴中的多个项目)

我想在手风琴上创建一个新的数据属性,比如data-collapse-type="auto|manual"

对于我的技能水平来说,引导 jQuery 插件有点高级。我需要处理的最相关的部分似乎在第 52 行,actives.collapse('hide')。如果设置了 'data-collapse-type="manual"',我不希望这种情况发生(省略属性或设置 auto 应该保持默认行为)。

我创建了一个jsfiddle where I've been experiementing。

谁能帮助我走上正轨?

【问题讨论】:

好消息是现在angular-ui.github.com/bootstrap 中有一个用于boostrap 手风琴的原生AngularJS 指令。在这里演示:plnkr.co/edit/SPWkMO?p=preview 看this answer:“只是不要使用数据父属性”! 【参考方案1】:

其实你不需要修改任何代码。从 twitterbootstrap 网站仔细阅读以下声明

只需将 data-toggle="collapse" 和 data-target 添加到元素即可自动分配对可折叠元素的控制。 data-target 属性接受一个 CSS 选择器来应用折叠。请务必将类折叠添加到可折叠元素。如果您希望它默认打开,请添加其他类。

所以不要使用data-parent='#idofAccordion',而是使用data-target='#idofCollapseItem'

它应该可以完美运行。

这里是demo on plunker

【讨论】:

jsfiddle 对我不起作用:Item #1 根本不展开,我不能同时展开 Item #2 和 Item #3。但我能够让它在我自己的应用程序中运行。比破解 bootstrap.js 要好得多! 是的,我很懒,我只修改了第一个。反正我现在修好了。 它还在。你可以再试一次 绝对是一个更好的答案。无需修改。 Surya,你是对的,你需要做的就是移除 data-parent 属性。【参考方案2】:

我已经分叉并更新了你的小提琴。

只要去.show函数,我也写了cmets。

http://jsfiddle.net/2Rnpz/

【讨论】:

这是完美的。现在我看到了解决方案,我确定我想多了。感谢您的快速帮助! 虽然这在技术上有效 - 请注意修改核心引导 js 可能会导致维护问题,而其他答案使用声明性 && 支持的方法来解决问题。【参考方案3】:

由于问题没有提到特定版本的 Bootstrap,这里有一个 bootstrap 4 解决方案: 从具有data-toggle="collapse" 属性的标签中删除data-parent="#accordion"。这是从 Collapse 文档中提取的示例,其中 data-parent=#accordion" 位已删除。

引导层: https://www.bootply.com/3wV4WbzBtT#

【讨论】:

【参考方案4】:

一次只打开一个手风琴(即折叠其余部分)的技术是同时放置 data-parent="#accordion" data-target="#collapseOne" 使其看起来像这样

<a class="accordion-toggle" data-toggle="collapse" href="#"
    data-parent="#accordion" data-target="#collapseOne">
  Item #1
</a>

你可以在 plunker 中查看:http://plnkr.co/edit/56iXtA?p=preview

【讨论】:

这与所要求的完全相反!

以上是关于修改 Twitter Bootstrap 折叠插件以保持手风琴打开的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 在悬停时折叠手风琴

折叠插件:一次只显示一个面板

如何使用 Twitter Bootstrap API 检测您正在使用的设备视图?

如何让 twitter-bootstrap 导航栏子项在小屏幕上折叠/展开?

Twitter Bootstrap:多个响应式可折叠导航?

点击时隐藏 Twitter Bootstrap 导航折叠