我可以检查Bootstrap Modal当前是否以编程方式显示/隐藏?
喜欢 bool a = if("#myModal").shown();
吗?
我需要对/错
Answers:
alert($('#myModal').hasClass('in'));
如果模式打开则返回true
$('#myModal').hasClass('show')
,Bootstrap V4
这是一个古老的问题,但无论如何这是我用的东西,以防有人在寻找相同的东西
if (!$('#myModal').is(':visible')) {
// if modal is not shown/visible then do something
}
使用hasClass('in')
。如果在modal中,它将返回trueOPEN
状态。
例如:
if($('.modal').hasClass('in')){
//Do something here
}
使用Bootstrap 4:
if ($('#myModal').hasClass('show')) {
alert("Modal is visible")
}
这是一些自定义模式代码,这些模式代码为模式状态提供了更明确命名的类:
$('.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;
}