我正在使用jQuery UI开发一个系统,该系统会打开一个对话框,该对话框基本上会加载日志文件的持续刷新尾部。它工作得很好,但问题是,当你关闭它时,它不会杀死对话框,所以它仍然继续用文件的尾部向你发送流量。显然这不是一个好习惯。
无论如何,到目前为止我尝试解决问题的代码如下。
var $console = $('<div title=" Server Console"></div>')
.dialog({
height: 720,
width: 1000,
resizable: false,
autoOpen: false
});
$(".consoleOpen").click(function(){
$console.dialog('open').load("console.php?console="+this.name);
});
$console.bind('dialogclose', function(event) {
$console.remove();
});
这是console.php
中的刷新功能:
(function($)
{
$(document).ready(function()
{
var $container = $("#responsecontainer");
$container.load("console_class.php?console=<?php echo $console; ?>");
var refreshId = setInterval(function()
{
$container.load('console_class.php?console=<?php echo $console; ?>');
}, <?php echo $consoleRefresh;?>);
});
})(jQuery);
答案 0 :(得分:3)
$console.bind('dialogclose', function(event) {
$console.dialog('destroy').remove();
});
您还需要使用clearInterval,否则只要页面打开就会继续运行。
$console.bind('dialogclose', function(event) {
$console.dialog('destroy').remove();
clearInterval(refreshID);
});
答案 1 :(得分:0)
你已经提到过了
$console.dialog("destroy");
答案 2 :(得分:0)
试试这个:
$console.bind('dialogclose', function(event) {
$console.dialog( "destroy" );
});
或阅读此jQuery Dialog
答案 3 :(得分:0)
我有同样的问题......
请参阅:
jQuery UI dialog close doesn't clear dialog (Stack Overflow问题)
Creating dialogs on demand (博客条目)
您需要致电$('#dialog_id').dialog("destroy");
。
答案 4 :(得分:0)
这里的对话不是问题 - 这是正在进行通话的时间间隔。
你声明refreshId
这样做的地方......
var window.refreshId = setInterval(function()
然后删除对话框,添加clearInterval ...
$console.bind('dialogclose', function(event) {
$console.remove();
clearInterval(window.refreshId);
});
这使变量refreshId
成为全局变量,以便可以在代码中的其他位置访问它。然后,您可以使用它来清除重复呼叫的间隔。