You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过URL自动展开Bootstrap 4嵌套Collapse折叠面板

实现思路

你的活动折叠项本身是嵌套在对应日期的.collapse容器内的,只要先找到活动所属的外层折叠容器,按「先展开外层日期→再展开内层活动」的顺序触发即可,同时为了避免滚动位置计算错误,要等折叠动画完成后再执行滚动定位。

代码实现

替换你原有JS代码为以下内容即可:

jQuery($ => {
  if (window.location.hash) {   
    const hash = window.location.hash;
    const $eventCollapse = $(hash);
    // 校验目标活动折叠项是否存在
    if ($eventCollapse.length) {
      // 找到活动所属的外层日期折叠容器
      const $dayCollapse = $eventCollapse.parents('.collapse').first();
      // 监听外层折叠完成事件
      $dayCollapse.one('shown.bs.collapse', () => {
        // 外层展开后再展开内层活动
        $eventCollapse.collapse('show');
        // 内层活动展开完成后执行滚动
        $eventCollapse.one('shown.bs.collapse', () => {
          $('html, body').animate({
            scrollTop: $eventCollapse.offset().top - 180
          }, 500);
        });
      });
      // 触发外层日期折叠项展开
      $dayCollapse.collapse('show');
    }
  }
});

说明

  • 用parents('.collapse').first()可以精准匹配到活动所属的最近一级外层折叠容器,就算后续嵌套层级调整也能适配
  • 用Bootstrap原生的shown.bs.collapse事件监听折叠完成状态,不需要手动写定时器,适配自定义的折叠动画时长,滚动定位不会出现偏移
  • 加了元素存在性校验,避免hash不存在时控制台报错

内容的提问来源于stack exchange,提问作者Lara Kreisz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:15:04