如何使用带有单选按钮列表的 Bootstrap 手风琴

Posted

技术标签:

【中文标题】如何使用带有单选按钮列表的 Bootstrap 手风琴【英文标题】:How to use Bootstrap accordion with a radio button list 【发布时间】:2013-08-09 04:01:34 【问题描述】:

我正在尝试构建一个 UI,它将 html 单选按钮列表与 Bootstrap 的 collapse 组件提供的手风琴功能相结合。目标是选择任何单选按钮也会在其下方展开一个手风琴面板。

Here's a JsFiddle 演示了部分工作的实现。不幸的是,虽然手风琴功能有效,但单选按钮并没有被选中(除了初始选择,它随后永远不会改变)。

请原谅我的示例中的无效 HTML。我知道input 元素没有href 属性,但我不认为这是问题的原因。

我看到this answer 提出了类似的问题,但我宁愿避免编辑 Bootstrap 代码,并希望可能有一种纯粹的声明方式来完成这项工作。

非常感谢您的建议, 蒂姆

编辑:对于面临相同问题的任何其他人,此功能在 Bootstrap v3.0 中开箱即用。

【问题讨论】:

【参考方案1】:

我让它与一些额外的 jQuery 一起工作。 jsFiddle

我相信还有更优雅的方法可以做到这一点。但它有效。

$('#collapseOne').on('shown', function()
    $('#radio1').prop('checked', true);
);

$('#collapseTwo').on('shown', function()
    $('#radio2').prop('checked', true);
);

$('#collapseThree').on('shown', function()
    $('#radio3').prop('checked', true);
);

【讨论】:

感谢您的快速回答。我仍然很好奇是否有一个纯粹的声明性解决方案,但你的解决方案确实有效,而且已经足够好了。谢谢。 感谢您的解决方案,但是一些奇怪的副作用是单击启用的单选按钮会使手风琴再次崩溃。【参考方案2】:

下面的代码稍微优雅一些​​,但基于 Schmalzy 的回答。

这并没有更好的工作,但确实减少了所有手风琴切换的代码块。

如果我添加了额外的切换,我想避免更新 JS 代码。

$("[id^=collapse]").on('shown', function()
    $(this).parents('.accordion-group').find('.accordion-toggle')
         .prop('checked', true);
);

【讨论】:

【参考方案3】:

问题确实是标签上的href 属性。请改用标签上的data-target 属性。

Bootstrap 假定 html 有效并且 href 将位于锚标记上。因此,它会阻止默认操作,即跟随链接并执行折叠。在您的情况下,单击标签的默认操作是检查关联的输入。 Bootstrap 正在阻止这种情况。

【讨论】:

以上是关于如何使用带有单选按钮列表的 Bootstrap 手风琴的主要内容,如果未能解决你的问题,请参考以下文章

带有复选框和单选按钮的 Android 列表视图

如何使用 Bootstrap v3.4.1 设置禁用(也选中)单选按钮的样式?

如何在 Bootstrap 中将单选按钮设置为“选中”? [复制]

如何将 Bootstrap 中的按钮组转换为表单的单选式输入?

使用 Bootstrap 4 展开单选按钮切换

如何使 Bootstrap 单选按钮继续进入下拉菜单