手动切换Bootstrap手风琴"锁定"它

时间:2014-12-04 01:20:44

标签: javascript jquery twitter-bootstrap accordion

我正在使用一个带有Bootstrap手风琴的页面。它工作正常,但我被要求实现一个功能,当一个特定的可折叠元素从各种其他页面链接时是“打开” - 所以“www.whatever.tld#e2”会带你到已经打开的第二个元素。获得这样的行为没有问题,StackOverflow和其他地方的各种其他页面都充分涵盖了它。我尝试的实现如下:

$(window.location.hash + '.collapse').collapse('toggle');

此功能可根据需要打开手风琴的正确部分。但是,在导航到这样的页面后,它会以该形式“锁定”页面 - 它不再响应任何对手风琴元素的点击,并且您无法关闭已打开的元素或打开其他元素。没有其他人似乎遇到过这个问题,或者如果他们这样做了就没有提到它。这里:

Bootstrap Collapse - open the given id fragment

bootstrap-collapse.js hide and show events

我尝试过修改此代码,例如

var anchor = window.location.hash;
$(".collapse").collapse('hide');
$(anchor).collapse('show');

这意外行为 - 所有元素都被强制打开,无法关闭。删除第二行修复了这个问题,但是否则表现为我指定的原始代码 - 它打开目标元素,但冻结了手风琴。

以下是我正在使用的手风琴结构的摘录。我宁愿不要修改它,除非我无法避免,因为我试图坚持组织风格指南,这个手风琴代码是人们在我们的CMS上使用的标准手风琴:

<div id="accordion-asset-listing" class="accordion" id="accordion" role="tabpanel">
    <section class="accordion-group" role="tab" aria-selected="false">
       <header class="accordion-heading">
           <h3><a aria-controls="pharmacy" href="#pharmacy" class="accordion-toggle" data-toggle="collapse" data-parent="#accordion-asset-listing">Pharmacy</a></h3>
       </header>

       <div id="pharmacy" class="accordion-body collapse" aria-hidden="true" role="tabpanel">
          <div class="accordion-inner">
             <p><!-- content here --></p>
          </div>
       </div>
    </section>

我在JS或它的使用上并不令人惊讶,所以任何人们不得不把我放在正确的轨道上都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

最后排序了,虽然我仍然不明白为什么它最初破了。在跳转到该站点调用的.js文件后,我最终手动重建了我想要的那对并在代码中调用它们。这不是一个很好的解决方案,但它至少起作用了。

由于该站点(在Squiz Matrix CMS上管理的大学网站)使用了一种Bootstrap,Jquery等“定制版本”,似乎剥离了这些东西的一些元素,可能会引入一些错误特定于我们这些东西的版本。