【问题标题】:Auto-close modal window, or close on click自动关闭模态窗口,或单击关闭
【发布时间】:2012-04-08 13:04:39
【问题描述】:

我有一个工具提示出现,我想在 1500 毫秒后自动关闭,或者如果用户单击页面上的任何位置,则立即关闭。

我尝试了以下方法:

$('#action-result').fadeIn('fast').delay(1500).fadeOut('fast');
$('body').click(function(){

    $('#action-result').fadeOut('fast');

});

但无论出于何种原因,延迟似乎已完全控制,并且在延迟结束之前不允许该元素发生任何其他事情。


编辑

感谢 Ohgodwhy 和 ThiefMaster,我唯一需要对 click 函数做的就是添加一个 stop 来清除之前触发的 .delay()。

$('body').click(function(){

    $('#action-result').stop().fadeOut('fast');

}); 

【问题讨论】:

  • $('body').click(function(){ window.clearTimeout(); $('#action-result').fadeOut('fast'); });

标签: jquery modal-dialog


【解决方案1】:

不要使用延迟,使用 setTimeout。

$('#action-result').fadeIn('fast', function(){
  //callback for after fadeIn completes
  setTimeout(function(){
    $(this).fadeOut('fast');
  }, 1500);  //1500 is our delay
});

清除点击超时。

$('body').click(function(){
  window.clearTimeout(); //timer cleared, now let's fadeOut.
  $('#action-result').fadeOut('fast');
});

【讨论】:

  • 您可能想解释一下为什么。由于fadeIn/Out 使用动画队列,.delay() 应该不是问题...
  • 我试过了,不幸的是它没有自动关闭。我不知道为什么。
  • 只需使用 $('#action-link').stop();正如 thiefmaster 指出的那样,停止所有 fx 队列,包括延迟(间隔)、淡入淡出、动画。
【解决方案2】:

以下应该实现所需的功能:

var x = setTimeout(function () { $("#action-result").fadeOut("fast"); }, 1500);
$("body").click(function () {
    $("#action-result").fadeOut("fast");
    clearTimeout(x);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2014-02-02
    相关资源
    最近更新 更多