Twitter bootstrap 无法在堆栈另一个模式后滚动长模式

Twitter bootstrap 无法在堆栈另一个模式后滚动长模式,twitter-bootstrap,twitter-bootstrap-3,modal-dialog,bootstrap-modal,Twitter Bootstrap,Twitter Bootstrap 3,Modal Dialog,Bootstrap Modal,我必须使用模式,模式1很长,它首先打开,我可以在页面出现时轻松滚动页面,模式2很短,但当我堆叠打开模式2(模式1仍然打开时打开模式2),然后关闭模式2时:模式1无法再滚动。我试图隐藏模型1,然后在模式2处于隐藏状态时再次显示,但没有帮助 $('#modal2').on('hide.bs.modal', function () { $("#modal1").modal('show'); }); 简单的答案是引导不支持重叠模态。第一条警告说,从 不支持重叠模态 请确保在运行时不要打开模式文件

我必须使用模式,模式1很长,它首先打开,我可以在页面出现时轻松滚动页面,模式2很短,但当我堆叠打开模式2(模式1仍然打开时打开模式2),然后关闭模式2时:模式1无法再滚动。我试图隐藏模型1,然后在模式2处于隐藏状态时再次显示,但没有帮助

$('#modal2').on('hide.bs.modal', function () {
   $("#modal1").modal('show');
});

简单的答案是引导不支持重叠模态。第一条警告说,从

不支持重叠模态

请确保在运行时不要打开模式文件 另一个仍然可见。一次显示多个模态 需要自定义代码

这很可能是他们不推荐它的原因之一。如果没有很好的理由,我个人不会推荐堆叠模态,可能有更好的方法来做你想做的事情,例如,你可以在打开第二个模态之前通过编程简单地关闭第一个模态,你可以动态地更改第一个模态的内容,你可以在模态中使用选项卡等等


看起来你说你已经在打开第二个模态之前关闭了第一个模态。也许你可以在这一点上展开讨论,因为很明显,Bootstrap不支持或建议将模态堆叠起来。

简单的答案是Bootstrap不支持重叠模态。第一条警告说,从

不支持重叠模态

请确保在运行时不要打开模式文件 另一个仍然可见。一次显示多个模态 需要自定义代码

这很可能是他们不推荐它的原因之一。如果没有很好的理由,我个人不会推荐堆叠模态,可能有更好的方法来做你想做的事情,例如,你可以在打开第二个模态之前通过编程简单地关闭第一个模态,你可以动态地更改第一个模态的内容,你可以在模态中使用选项卡等等


看起来你说你已经在打开第二个模态之前关闭了第一个模态。也许你可以在这一点上展开讨论,因为很明显Bootstrap不支持或不建议将模态从盒子里堆叠出来。

好的,挖掘之后,我发现了一个漏洞,在这里发布,这样任何有同样问题的人都可以解决

            $('body').on('hidden.bs.modal', function (e) {
                if($('.modal').hasClass('in')) {
                    $('body').addClass('modal-open');
                }    
            });

好的,在挖掘之后,我发现了一个黑客,发布在这里,这样任何有同样问题的人都可以解决

            $('body').on('hidden.bs.modal', function (e) {
                if($('.modal').hasClass('in')) {
                    $('body').addClass('modal-open');
                }    
            });

来自@Thinh Hoang Nhu的黑客不是为我工作的,但他在正确的轨道上。如果有人偶然发现了同样的问题,我的解决方案是在第二个模态中添加一个类(我知道我在打开第一个模态后打开的那些模态),并在很小的延迟下添加这个函数

$('body').on('hide.bs.modal', '.modal2nd', function () {
    setTimeout(function(){
        $('body').addClass('modal-open');
    }, 500);
});

这对我有效。

来自@Thinh Hoang Nhu的黑客对我无效,但他走上了正确的道路。如果有人偶然发现了同样的问题,我的解决方案是在第二个模态中添加一个类(我知道我在打开第一个模态后打开的那些模态),并在很小的延迟下添加这个函数

$('body').on('hide.bs.modal', '.modal2nd', function () {
    setTimeout(function(){
        $('body').addClass('modal-open');
    }, 500);
});

这对我来说很有效。

一个注意事项-不需要使用您的特定模态ID修改上述代码#-按原样运行即可。感谢@SteveFrench的澄清。是的,此代码适用于一般情况。请注意-无需使用特定模态的ID#修改上述代码-按原样运行即可。感谢@SteveFrench的澄清。是的,此代码适用于一般情况。