在jQuery UI中销毁一个对话框

时间:2012-11-12 15:52:18

标签: php jquery jquery-ui

我正在使用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);

5 个答案:

答案 0 :(得分:3)

查看API函数 destroy()

$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)

我有同样的问题......

请参阅:

您需要致电$('#dialog_id').dialog("destroy");

答案 4 :(得分:0)

这里的对话不是问题 - 这是正在进行通话的时间间隔。

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

var window.refreshId = setInterval(function()

然后删除对话框,添加clearInterval ...

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

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