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

Bootstrap 3手风琴嵌套折叠意外触发滚动问题求助

解决Bootstrap手风琴仅主面板触发滚动脚本的问题

你可以通过以下几种方式实现仅主手风琴面板触发滚动逻辑,内部折叠面板不触发:

方案一:通过类名判断触发元素

利用主面板已有的mainPanel类,在事件处理函数中判断当前触发事件的元素是否为主面板,非主面板则跳过滚动逻辑:

$(document).ready(function () {
    $('.panel-collapse').on('shown.bs.collapse', function (e) {
        // 仅当触发元素是主面板时执行滚动
        if (!$(this).hasClass('mainPanel')) {
            return;
        }
        var $panel = $(this).closest('.panel');
        $('html,body').animate({
            scrollTop: $panel.offset().top
        }, 500); 
    }); 
});

方案二:精准绑定主面板事件

直接给主面板元素绑定事件,避免内部折叠面板触发:

$(document).ready(function () {
    // 只选择#accordion下带mainPanel类的panel-collapse元素绑定事件
    $('#accordion .panel-collapse.mainPanel').on('shown.bs.collapse', function (e) {
        var $panel = $(this).closest('.panel');
        $('html,body').animate({
            scrollTop: $panel.offset().top
        }, 500); 
    }); 
});

方案三:阻止内部折叠面板的事件冒泡

给内部折叠面板绑定事件,阻止事件向上冒泡到主面板,避免触发滚动逻辑:

$(document).ready(function () {
    $('.panel-collapse').on('shown.bs.collapse', function (e) {
        var $panel = $(this).closest('.panel');
        $('html,body').animate({
            scrollTop: $panel.offset().top
        }, 500); 
    }); 

    // 阻止内部折叠面板的事件冒泡
    $('.collapse13-CollapseText').on('shown.bs.collapse', function (e) {
        e.stopPropagation();
    });
});

说明

  • 方案一和方案二更推荐,逻辑清晰且维护成本低,尤其是方案一,后续新增主面板只需添加mainPanel类即可自动生效。
  • 方案三适合内部折叠面板类名固定的场景,需要确保所有内部折叠面板都被选中。

内容的提问来源于stack exchange,提问作者That's a Great Question

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:45:11