我有以下结构(缩减内容后可能复制/粘贴错误)。它基本上是折叠元素内的折叠元素。
我还有以下代码,用于在单击后滚动到打开的手风琴元素:
这段代码可以正常运行 - 只要手风琴元素没有子手风琴。一旦打开了父手风琴,然后再打开子手风琴,它会滚动到子元素,但然后会滚动回父元素。
我需要修改JavaScript片段中的什么才能使其正常工作? 我相当确定当前问题是由于使用
我还有以下代码,用于在单击后滚动到打开的手风琴元素:
$(".accordion").on("shown.bs.collapse", function() {
var myEl = $(this).find('.collapse.in').prev('.panel-heading');
$('html, body').animate({
scrollTop: $(myEl).offset().top - 6
}, 500);
});
这段代码可以正常运行 - 只要手风琴元素没有子手风琴。一旦打开了父手风琴,然后再打开子手风琴,它会滚动到子元素,但然后会滚动回父元素。
我需要修改JavaScript片段中的什么才能使其正常工作? 我相当确定当前问题是由于使用
.prev
引起的。<div class="panel-group accordion" id="application-migration" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="migrate-hybrid">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#hybrid-migration" href="#collapseMigrateHybrid" aria-expanded="false" aria-controls="collapseMigrateHybrid"> ... </a>
</h4>
</div>
<div id="collapseMigrateHybrid" class="panel-collapse collapse" role="tabpanel" aria-labelledby="migrate-hybrid">
...
...
...
<div class="panel-group accordion" id="setupCordova" role="tablist" aria-multiselectable="false">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="setupCordova">
<h4 class="panel-title">
<a class="preventScroll" role="button" data-toggle="collapse" data-parent="#setupCordova" data-target="#collapseCordova" aria-expanded="false" aria-controls="collapseCordova"> ... </a>
</h4>
</div>
<div id="collapseCordova" class="panel-collapse collapse" role="tabpanel" aria-labelledby="setupCordova">
<div class="panel-body">
...
...
...
</div>
</div>
</div>
</div>
</div>
</div>
</div>
$(this).offset().top - 20
或者$(this).parent().parent().offset().top - 6
。效果可以看到。 - Gleb Kemarsky