Can I check if Bootstrap Modal Shown / Hidden?

前端 未结 11 1500
走了就别回头了
走了就别回头了 2020-12-05 12:29

Can I check if Bootstrap Modal currently Shown / Hidden Programatically?

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

I need true/false

11条回答
  •  孤街浪徒
    2020-12-05 13:01

    Here's some custom modal code that gives the modal states more explicitly named classes:

    $('.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");
    });
    

    You can then easily target the modal's various states with both JS and CSS.

    JS example:

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

    CSS example:

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

提交回复
热议问题