javascript - 防止页面在折叠的手风琴部分向上滚动。引导程序 4
问题描述
它是一个 bootstrap 4 手风琴,主体部分比平时大,这就是为什么当部分折叠下面的内容时,它会随之向上滚动。
我正在使用此代码滚动到单击标题的顶部并取消由先前打开的部分折叠引起的滚动。
但它似乎在前一个崩溃之前运行。我在互联网上进行了研究,无法找到解决方案。
代码很长,分享相关的片段。在单击标题时还使用 ajax 填充卡体。
<div id="accordion" class="row"></div>
<script>
success: function(res) {
let resultHtml = ``;
for (let i = 0; i < res.length; i++) {
resultHtml +=
`
<div class="card col-12 px-0">
<div class="card-header" id="heading${i}">
<h5 class="mb-0">
<button class="btn btn-link w-100 text-left btn-expand" data-toggle="collapse" data-target="#collapse${i}" data-place-id="${ res[i].place_id }" aria-expanded="false" aria-controls="collapse${i}"><img class="place-icon" src="${ res[i].icon }">
${ res[i].name }
<span class="float-right">Rating: ${ getStars(res[i].rating) }</span>
</button>
</h5>
</div>
<div id="collapse${i}" class="collapse" aria-labelledby="heading${i}" data-parent="#accordion">
<div class="card-body"></div>
</div>
</div>`;
}
$("#accordion").html(resultHtml);
$('#accordion').on('hide.bs.collapse', function () {
$('html, body').animate({
scrollTop: $( event.target ).parent().offset().top
}, 400);
});
</script>
shown.bs.collapse
并且hidden.bs.collapse
不为我工作。
show.bs.collapse
并且hidde.bs.collapse
正在射击,但仍然没有工作。
谢谢你
解决方案
仅当卡体的内容比浏览器长时才会发生。同时它仅在您使用 data-parent 时发生。
由于带有打开卡体的卡头在页面上方,因此折叠组件将下方的所有内容推到其位置。在某种程度上,它做了它应该做的事情。
所以有一个选择。要么您必须在打开另一张卡片时放弃关闭打开的卡片(不使用 data-parent),要么使用将卡片标题滚动到顶部的脚本,这是我的选择。
我知道这不是您期望的答案,但在有人找到更好的解决方案之前,这些选择是我们最好的选择。
推荐阅读
- bash - 在 SSH 终端中运行 VS Code 调试器
- linux - 保存 nvm、npm Linux 安装的问题
- python - 标记化:如何在用于 NLP 的 python 中不标记标点符号,如 `^*
- websphere - 升级了我的 web 应用程序以使用 OJDBC8.jar。但Websphere8.5引用旧版本ojdbc6并返回nosuchmethoderror
- sql - 在 oracle plsql 游标中使用 % 的like 运算符
- angular - Angular中印度手机号码的正则表达式
- python - Lambda 函数抛出一个异常说 unhashable type: 'dict': TypeError
- three.js - Three.js 多层和带效果器的选择性照明
- python - Python 创建列表的列表覆盖但不追加
- android - 失败 [INSTALL_FAILED_INVALID_APK: 启动程序包未安装 tob 状态为关闭