首页 > 解决方案 > 在 Popover 上杀死 setTimeout

问题描述

我有用于提交反馈/问题的弹出框。用户可以通过它提交反馈/问题。我有两种弹窗状态:

  1. 初始状态,显示文本框和提交按钮
  2. 成功状态,显示成功的大 fa-check-circle。

成功弹出框应在 5 秒内消失,因此我将 setTimeout 设置为 5000,这会破坏成功并将弹出框重新初始化为初始状态。

用户有可能点击触发控件返回隐藏成功状态。如果用户这样做,它应该隐藏/销毁成功状态并重新初始化弹出框。我处理了触发控制的点击事件,并使用下面的代码检查弹出框是否可见。

$('.questionIcon').data('bs.popover').tip().hasClass('in')

如果弹出窗口可见隐藏/销毁并将其重新初始化为初始状态。这里的问题是 setTimeout 可能仍然在 Success 弹出窗口上。如何让我的弹出框强制忽略超时执行我的代码?开始知道可以使用 clearTimeout 但如何使用 popover ?

标签: javascriptjquerypopover

解决方案


绑定setTimeout()到一个变量并将其传递给clearTimeout()您的弹出处理程序。

var myTimeout = window.setTimeout(function(){ doSomething(); },5000);
window.clearTimeout(myTimeout);

推荐阅读