我可以检查是否显示/隐藏Bootstrap模式?

时间:2013-10-30 05:42:54

标签: javascript twitter-bootstrap twitter-bootstrap-3 bootstrap-modal

我可以检查当前显示/隐藏的Bootstrap Modal吗?

bool a = if("#myModal").shown();

我需要真/假

12 个答案:

答案 0 :(得分:120)

alert($('#myModal').hasClass('in'));

如果模态打开,它将返回true

答案 1 :(得分:25)

文档中给出了最好的方法

$('#myModal').on('shown.bs.modal', function () {
  // will only come inside after the modal is shown
});

有关详细信息,请参阅http://getbootstrap.com/javascript/#modals

答案 2 :(得分:20)

这是一个古老的问题,但不管怎样,这是我用过的东西,因为有人在寻找同样的东西

if (!$('#myModal').is(':visible')) {
    // if modal is not shown/visible then do something
}

答案 3 :(得分:4)

当模态隐藏?我们这样检查:

$('.yourmodal').on('hidden.bs.modal', function () {
    // do something here
})

答案 4 :(得分:3)

使用Sub clear_all_styles() Dim styT As Style On Error Resume Next For Each styT In ActiveWorkbook.Styles If Not styT.BuiltIn Then If styT.Name <> "1" Then styT.Delete End If Next styT 。如果modal处于hasClass('in')状态,它将返回true。

E.g:

OPEN

答案 5 :(得分:3)

以正式方式:

> ($("element").data('bs.modal') || {})._isShown    // Bootstrap 4
> ($("element").data('bs.modal') || {}).isShown     // Bootstrap <= 3

{}用于避免模态尚未打开的情况(它返回undefined)。您也可以将其指定为{isShown: false},以使其更有意义。

答案 6 :(得分:2)

下面是一些自定义模式代码,这些代码为模式状态提供了更明确命名的类:

$('.modal').on('show.bs.modal', function(e)
{
    e.currentTarget.classList.add("modal-fading-in");
    e.currentTarget.classList.remove("modal-fading-out");
    e.currentTarget.classList.remove("modal-hidden");
    e.currentTarget.classList.remove("modal-visible");
});

$('.modal').on('hide.bs.modal', function(e)
{
    e.currentTarget.classList.add("modal-fading-out");
    e.currentTarget.classList.remove("modal-fading-in");
    e.currentTarget.classList.remove("modal-hidden");
    e.currentTarget.classList.remove("modal-visible");
});

$('.modal').on('hidden.bs.modal', function(e)
{
    e.currentTarget.classList.add("modal-hidden");
    e.currentTarget.classList.remove("modal-fading-in");
    e.currentTarget.classList.remove("modal-fading-out");
    e.currentTarget.classList.remove("modal-visible");
});

$('.modal').on('shown.bs.modal', function(e)
{
    e.currentTarget.classList.add("modal-visible");
    e.currentTarget.classList.remove("modal-fading-in");
    e.currentTarget.classList.remove("modal-fading-out");
    e.currentTarget.classList.remove("modal-hidden");
});

然后,您可以使用JS和CSS轻松定位模式的各种状态。

JS示例:

if (document.getElementById('myModal').hasClass('modal-fading-in'))
{
    console.log("The modal is currently fading in. Please wait.");
}

CSS示例:

.modal-fading-out, .modal-hidden
{
    opacity: 0.5;
}

答案 7 :(得分:1)

if($('.modal').hasClass('in')) {
    alert($('.modal .in').attr('id')); //ID of the opened modal
} else {
    alert("No pop-up opened");
}

答案 8 :(得分:1)

使用Bootstrap 4:

if ($('#myModal').hasClass('show')) {
    alert("Modal is visible")
}

答案 9 :(得分:1)

所有Bootstrap版本:

var isShown = $('.modal').hasClass('in') || $('.modal').hasClass('show')

要关闭它而不依赖于状态和版本:

$('.modal button.close').click()

更多信息

Bootstrap 3及之前版本

var isShown = $('.modal').hasClass('in')

引导程序4

var isHown = $('.modal').hasClass('show')

答案 10 :(得分:0)

对我而言,这是有效的

if($("#myModal").css("display")=='block') alert("modal shown");

答案 11 :(得分:0)

我尝试这样使用函数,然后在需要时调用此函数。一直为我工作。

function modal_fix() {
var a = $(".modal"),
    b = $("body");
a.on("shown.bs.modal", function () {
    b.hasClass("modal-open") || b.addClass("modal-open");
});
}