2013-09-28 58 views
1

我是JQuery的新手,所以請原諒明顯的noobish標題。我真的不知道該怎麼形容這個,但基本上,就是我用螢火看到我打開一個對話框後,很多的這些:JQuery對話框在DOM中留下HTML

<div class="ui-dialog ui-widget ui-widget-content ui-corner-all " style="display: none; position: absolute; overflow: hidden; z-index: 1006; outline: 0px none; height: auto; width: 400px; top: 137px; left: 436px;" tabindex="-1" role="dialog" aria-labelledby="ui-dialog-title-3"> 

有其中至少有100,我可以看到,每次我打開一個對話框。

有沒有辦法阻止它?我注意到,我打開的對話越多,系統變得越慢。我不確定這是什麼原因,但我懷疑。

+1

當您關閉對話框不破壞對話框中,我使用'$(本).dialog( 「親密」) – PSL

+0

; $ (this).dialog('destroy')。remove();'但他們仍然在冒泡 – NaN

+0

我不記得了,但是你需要在對話結束的事件中銷燬它。 – PSL

回答

0

創建一個jquery ui對話框有很多開銷,jquery使用各種各樣的對話特性,比如調整各個方向的大小,插件轉換後的對話框本身(以便以後重用)等等,所以如果你每次創建對話框你需要摧毀它們。一旦對話框中的關閉事件完成,您需要銷燬它們,您可以通過訂閱close event of dialog來列出關閉事件。

事情是這樣的:

$(':input').on('click', function() { 
    $('<div title="Basic dialog" style="display:none"> <p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the  x icon.</p></div>').dialog({ 
     close: function (event, ui) { 
      $(this).dialog('destroy'); //destroy it on every close 
     } 
    }); 
}); 

Demo

+0

再次感謝,我的朋友!整天,我追逐奇怪的行爲,這就是機票! – NaN

+0

@NaN很高興它有幫助... :)我過去常常使用jQuery對話框,但隨後使用jquery ui stuffs來處理這些維護問題。 :) – PSL