2012-11-12 61 views
0

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

回答

3

看那API功能destroy()

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

您還需要使用clearInterval,否則只要頁面打開,它就會一直運行。

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

一直在嘗試,它不起作用。 – Steve

+0

@Steve你可以創建一個jsfiddle顯示它不工作 - 或者你遇到的問題?我相信它確實有效。 –

+0

@wirey +1耶小提琴應該是不錯的.. –

0

你提到它已經

$console.dialog("destroy");

+0

不,不起作用。 – Steve

0

試試這個:

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

或閱讀本jQuery Dialog

+0

不,我已經嘗試了所有這些東西。 – Steve

+0

也許$ this.dialog(「destroy」); – Cedrun

0

對話框不是問題 - 這是撥打電話的時間間隔。

如果你聲明refreshId做這樣的......

var window.refreshId = setInterval(function() 

然後在那裏你刪除的對話框中,添加一個clearInterval ...

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

這使得可變refreshId全球,使它可以在代碼中的其他地方訪問。然後您可以使用它來清除重複呼叫的間隔。

+0

是一直在這方面工作了很久,但由於setInterval在不同的頁面上,它不工作... – Steve