【问题标题】:Can't check if modal is open [duplicate]无法检查模式是否打开[重复]
【发布时间】:2020-11-18 14:32:45
【问题描述】:

我无法检查模态是否打开。下面是我的代码。

<button id="btnOpenModal" class="btn btn-primary lift" data-toggle="modal" data-target="#myModal">
    Open Modal 
</button>

<!-- Modal -->
<div class="modal fade fixed-right" id="myModal" tabindex="-1" aria-modal="true" role="dialog">
    <div class="modal-dialog modal-dialog-vertical d-none" role="document">
        <div class="modal-content bg-glass">...</div>
    </div>
</div>

这是我的 JQuery。

$(document).ready(function() {
    if ($("#btnOpenModal").on("click", function(e) {
        if($('#myModal').hasClass("show")) console.log("shown");
    }));
});

当单击按钮时,模态将动态添加show 类到其类中,我想检查show 类是否存在。

【问题讨论】:

  • 你在使用 Bootstrap 吗?
  • 是的。 @SamMunroe。当我在单击按钮后检查模态时,模态 div 具有 show 类。但我无法在我的 jquery 中得到它,但我可以得到 fadefixed-right,它们也是模态的类,如您在上面的代码中所见。
  • 你可以试试这个$("#btnOpenModal").on("click", function(e) { if($('#myModal').is(":visible")){ console.log("shown") } }); 吗?
  • 不工作!我在按钮 onclick 事件内部和外部都添加了@Swati 的代码。还是不行。

标签: javascript html jquery


【解决方案1】:

删除您包裹在模态按钮 onclick 事件周围的 if 语句,如下所示:

   $("#btnOpenModal").on("click", function(e) { 
   setTimeout(()=>{
   if($('#myModal').hasClass("show"))     {console.log("shown");}
   }, 2000)
   });

它会等待 2 秒然后执行检查

【讨论】:

  • 不工作!它不显示shown 消息。
  • 我已经编辑了我的评论,现在检查它是否有效
  • 谢谢,但还是不行。有线的事情是我可以得到fadefixed-right 课程,但show 一个。
  • 我再次编辑了它,我添加了 setTimeout 让它在执行检查之前等待 2 秒
  • 是的,因为它必须等待 DOM 添加 show 类,如果不是,if 语句检查将在 DOM 添加 show 类之前触发,并且它不会做任何事情,因为模态没有表演课,请评价我的评论
猜你喜欢
  • 2023-04-10
  • 2019-03-30
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 2011-11-08
  • 1970-01-01
相关资源
最近更新 更多