首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >引导打开多个模式问题

引导打开多个模式问题
EN

Stack Overflow用户
提问于 2014-05-12 14:47:12
回答 3查看 1.5K关注 0票数 3

我有一个问题,我需要打开多个调制解调器。好的是,在我打开一个新的模式之前,现有的模式可以关闭。通常情况下,当一个模态被打开时,我会得到一个应用于主体的类,称为“modal open”,它将溢出:隐藏的应用于主体。

我创建了这个脚本:

代码语言:javascript
运行
复制
var login = function () {

    var handleRegister = function () {

        $("a").click(function (e) {
            var target = $(this).data("target");

            if (target) {
                var visible = $(target).is(":visible");

                if (!visible) { 
                    $('.modal').each(function () {
                        $(this).modal('hide'); // hide existing modals
                    });

                    $(target).modal('show');
                }

                e.preventDefault();
            }
        });
    }

    return {
        init: function () {
            handleRegister();
        }
    }
}();

如您所见,我循环遍历所有现有的模型并关闭它们(假设这调用hidden.bs.modal并从主体中移除模式打开的类),在运行这些模块之后,我在目标上调用显示方法。问题是模式开放的类不适用于主体.

我试着在show之后添加$("body").addClass("modal-open"),但是没有添加该类。

以前有人见过这个吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-13 10:38:25

我通过连接到隐藏/显示的事件模式来修正这个问题。我修改过的脚本如下:

代码语言:javascript
运行
复制
    var login = function () {

        var handleRegister = function () {

            $("a, button").click(function (e) {
                var target = $(this).data("target");
                var type = $(this).data("type");

                if (target && type) {
                    var visible = $(target).is(":visible");

                    if (!visible) {                    
                        var available_height = $(window).height() - $('.topbar').outerHeight();
                        var content = $('.modal-content', target);
                        content.height(available_height);

                        $('.modal').each(function () {
                            $(this).modal('hide'); // hide all existing modals
                        });

                        $(target).modal('show');
                    }

                    e.preventDefault();
                }
            });

            $('.modal').on('hidden.bs.modal', function (e) {
                $("body").removeClass("modal-open");
            });

            $('.modal').on('shown.bs.modal', function (e) {
                $("body").addClass("modal-open");
            });
        }

        return {
            init: function () {
                handleRegister();
            }
        }
    }();

我不知道为什么这样做,因为我希望这是会发生在模态脚本无论如何。但很管用,所以嘿吼。

票数 1
EN

Stack Overflow用户

发布于 2015-02-19 17:24:42

这是我的解决方案:

在你打开第二个模态之前:

代码语言:javascript
运行
复制
hasAlreadyModalOpen = $("BODY").hasClass("modal-open");
mySecondModal.modal("show");

mySecondModal.on('hidden.bs.modal', function (e) {
    if (hasAlreadyModalOpen) {
        $("body").addClass("modal-open");
    }
});
票数 0
EN

Stack Overflow用户

发布于 2016-12-11 08:02:37

一个很老的问题,但一个简单的答案,因为这是高搜索结果,这仍然是一个问题。向任何辅助模式(如sub-modal )添加一个额外的类,然后链接到它们的隐藏事件,只会减轻这一点。

代码语言:javascript
运行
复制
$(document).on("hidden.bs.modal",".sub-modal.modal", function () {
    $("body").addClass("modal-open");
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23612169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档