使用BS5手风琴组件时点击头部就消失问题排查求助
问题原因
代码核心错误为ID重复冲突:
- 每一组手风琴的「头部容器ID」和「内容面板ID」完全重复,比如第一组头部
<h2>的ID为collapse1,下方内容面板<div>的ID也为collapse1 - Bootstrap触发折叠时会根据
data-bs-target匹配对应ID的元素,ID冲突导致错误将头部元素判定为需要折叠的对象,点击后就会出现头部消失的问题 - 额外错误:默认展开的第一组手风琴按钮不应该添加
collapsed类,会导致初始箭头样式错误
修正后完整代码
<link href="//cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="//cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script> <div class="accordion accordion-flush" id="collapseMain"> <div class="accordion-item"> <!-- 头部ID改为不重复的heading1 --> <h2 class="accordion-header" id="heading1"> <!-- 移除多余的collapsed类 --> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapse1" aria-expanded="true" aria-controls="collapse1">head1</button> </h2> <!-- 内容面板ID保持collapse1,aria-labelledby改为对应头部的ID heading1 --> <div id="collapse1" class="accordion-collapse collapse show" aria-labelledby="heading1" data-bs-parent="#collapseMain"> <div class="accordion-body"> xxx</div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header" id="heading2"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse2" aria-expanded="false" aria-controls="collapse2">head2</button> </h2> <div id="collapse2" class="accordion-collapse collapse" aria-labelledby="heading2" data-bs-parent="#collapseMain"> <div class="accordion-body"> xxx</div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header" id="heading3"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse3" aria-expanded="false" aria-controls="collapse3">head3</button> </h2> <div id="collapse3" class="accordion-collapse collapse" aria-labelledby="heading3" data-bs-parent="#collapseMain"> <div class="accordion-body"> xxx</div> </div> </div> </div>
内容的提问来源于stack exchange,提问作者Wilf
相关产品推荐
相关产品推荐

