jQuery UI对话框使用setTimeout自动关闭

时间:2011-10-31 14:19:17

标签: javascript jquery jquery-ui settimeout

我正在尝试让对话框在打开后三秒钟自动关闭。我尝试了以下方法:

setTimeout($("#mydialog").dialog('close'), 3000);

这是在上下文中:

$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true
});

setTimeout($("#acknowledged-dialog").dialog('close'), 3000);

但是用这种方法,它甚至都没有显示!我猜测close方法在页面显示后立即被调用。日志显示没有错误。

我也试过绑定到dialogopen事件:

$("#acknowledged-dialog").bind('dialogopen', function(event, ui) {
    setTimeout($(this).dialog('close'), 3000);
});
$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true
});

对话框显示,但不会自动关闭。这里的日志也没有错误。

我是否无法在setTimeout中的$参数中使用'this'?

2 个答案:

答案 0 :(得分:17)

setTimeout在3秒后调用$(“#mydialog”)。对话框(“关闭”)的返回值。你想把整个东西扔成一个字符串,它应该工作得很好。另外,我不认为你想在初始化对话框之前绑定'dialogopen'。下面应该可以正常工作:

$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true,
    open: function(event, ui){
     setTimeout("$('#acknowledged-dialog').dialog('close')",3000);
    }
});

答案 1 :(得分:8)

我专门针对您遇到的问题撰写了article。请阅读。

简而言之,您希望将$("#mydialog").dialog('close')与内联函数包装在一起,以便在执行延迟或触发事件时将其执行。

setTimeout(function(){
    $("#mydialog").dialog('close')
}, 3000);

对话框甚至没有显示,因为您在每种情况下都打开它后立即关闭它。