【问题标题】:setTimeout with Bootstrap Modal not displaying after time out超时后不显示引导模式的 setTimeout
【发布时间】:2013-05-06 22:23:50
【问题描述】:

我正在尝试延迟显示 Bootstrap 模式,直到 5 秒过去。这是我的代码部分。似乎是根据我在 MDN 上阅读的内容编写的。模态不会在任何时间后出现。任何帮助将不胜感激。

var timeout;
  function modalAlert(message){
        $("#myModalLabel").text("Hey Look!")
        $('.modal-body').html("<img src='"+message+"'>");
        timeout = window.setTimeout(showModal,5000);

  }
  function showModal(){
    console.log("HERE")
    $("#myModal").modal('show')
  }

Vijay Ramamurthy 帮我找到了解决方案:

var timeout;
  function modalAlert(message){
        $("#myModalLabel").text("Hey Look!")
        $('.modal-body').html("<img src='"+message+"'>");
        window.setTimeout(function(){showModal();},5000);

  }
  function showModal(){
    console.log("HERE")
    $("#myModal").modal('show')
  }

【问题讨论】:

  • 最终我设法通过安排我的 javascript 标签的顺序来解决这个问题。以前 setTimeout 位于 modal(); 之前它在 modal() 之后的 setTimeout 位置之后工作

标签: javascript jquery twitter-bootstrap modal-dialog settimeout


【解决方案1】:

使用“显示”事件处理程序在模式上注册超时,然后将其隐藏。您可以将这些函数链接在一起,因为它是一个 jQuery 插件。

$("#myModal").modal("show").on("shown", function () {
    window.setTimeout(function () {
        $("#myModal").modal("hide");
    }, 5000);
});

【讨论】:

  • 仅供将来参考,因为问题不是指特定的引导程序版本。在引导程序 3 中,该事件不称为 shown,而是称为 shown.bs.modal
【解决方案2】:

尝试在 modalAlert 函数中创建最后一行

timeout = window.setTimeout(function () {showModal();}, 5000);

【讨论】:

  • 那行不通。当我将你的方法或我的方法粘贴到 chrome 控制台时,它工作得很好。
  • 等等,我刚刚想通了。删除 timeout= 并且它工作正常。谢谢你的帮助!为我的问题添加了可行的解决方案。
  • 好吧,老实说,我对你为什么这样做感到困惑,因为我以前从未听说过,但我想既然它在 php 中工作,它可能在 javascript 中工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
相关资源
最近更新 更多