我正在使用一个带有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或它的使用上并不令人惊讶,所以任何人们不得不把我放在正确的轨道上都会受到高度赞赏。
答案 0 :(得分:0)
最后排序了,虽然我仍然不明白为什么它最初破了。在跳转到该站点调用的.js文件后,我最终手动重建了我想要的那对并在代码中调用它们。这不是一个很好的解决方案,但它至少起作用了。
由于该站点(在Squiz Matrix CMS上管理的大学网站)使用了一种Bootstrap,Jquery等“定制版本”,似乎剥离了这些东西的一些元素,可能会引入一些错误特定于我们这些东西的版本。