我写了以下内容:
// Called with setTimeout(magicDialogDelayedClose, 2500);
function magicDialogDelayedClose() {
$(".ui-dialog").fadeOut(function() {
dialog_general.dialog('close');
});
}
当我显示一个我想在 2.5 秒后自动关闭的通知对话框时,上面的代码会被 setTimeout 调用。
我注意到的问题是,如果使用手动关闭对话框,则该计时器仍在运行。如果用户随后打开一个新对话框(这很有可能),则计时器可以关闭该新对话框。
处理这个问题的明智方法是什么?j
最佳答案
粗略地说,在您的情况下,您不希望有一个全局适用的函数。您希望在每个对话框出现时将其关闭排队。从版本 1.4 开始,jQuery 已经实现了 delay函数就可以完成这个任务。它将一个空 Action 添加到动画队列中,以便后续的链接动画函数在队列中的延迟之后出现。
其实现方式如下:
function insertDialog() {
// substitute your insertion code here
var d = $('<div class="ui-dialog"></div>').appendTo($('#dialog_area'));
// add a 2.5s delay into the animation queue, then add
// a fadeOut with $(this).close() as a callback
d.delay(2500).fadeOut(function(){ $(this).close() });
}
关于jQuery - UI 对话框 - 寻找定时关闭的智能解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4701742/