我正在尝试让对话框在打开后三秒钟自动关闭。我尝试了以下方法:
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'?
答案 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);
对话框甚至没有显示,因为您在每种情况下都打开它后立即关闭它。