0

我正在使用jQuery UI开发一个系统,该系统打开一个对话框,该对话框基本上加载了一个不断刷新的日志文件尾部。它工作得很好,但问题是当你关闭它时,它不会终止对话框,所以它仍然会继续使用文件的尾部向你发送流量。显然这不是一个好习惯。

无论如何,到目前为止我尝试解决问题的代码如下。

var $console = $('<div title="&nbsp; 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);
4

5 回答 5

3

API函数destroy()

$console.bind('dialogclose', function(event) {
    $console.dialog('destroy').remove();
});

您还需要使用 clearInterval 否则只要页面打开它就会一直运行。

$console.bind('dialogclose', function(event) {
    $console.dialog('destroy').remove();
    clearInterval(refreshID);
});
于 2012-11-12T15:56:11.613 回答
0

你已经提到了

$console.dialog("destroy");

于 2012-11-12T15:54:25.403 回答
0

试试这个:

$console.bind('dialogclose', function(event) {
    $console.dialog( "destroy" );
});

或阅读这个jQuery 对话框

于 2012-11-12T15:59:32.720 回答
0

我也遇到过同样的问题...

看:

你需要打电话$('#dialog_id').dialog("destroy");

于 2012-11-12T16:05:08.430 回答
0

对话不是这里的问题——它是打电话的时间间隔。

在你声明refreshId的地方这样做......

var window.refreshId = setInterval(function()

然后在删除对话框的地方,添加一个 clearInterval ...

$console.bind('dialogclose', function(event) {
    $console.remove();
    clearInterval(window.refreshId);
});

这使变量成为refreshId全局变量,以便可以在代码的其他地方访问它。然后,您可以使用它来清除重复调用的间隔。

于 2012-11-12T17:23:33.277 回答