2011-12-08 38 views
2

在我的主頁上,我有一種可以打開和關閉的側面板。側面板通過jQuery的加載功能加載到主頁面上的div中。加載到該側板的內容如何在關閉時刪除所有jQuery UI對話框

部分是一個div(myDialog)

當點擊這個側板我所說的按鈕:

$("#myDialog").dialog({ 
    title : "Permission", 
    width : 300, 
    height : 200, 
    modal : true 
}); 

現在,如果我關閉使用jQuery的空函數清除其內容。然後我選擇所有和'查看源代碼'的jQuery在主體底部添加的html仍然存在。這會導致問題,當我重新打開側面板並嘗試打開相同的對話框,因爲有兩個div(具有重複的ID)。

我曾嘗試加入這一點,但它不工作:

close : function(){ 
    $("#myDialog").dialog("destroy"); 
} 

我怎樣才能清除的HTML jQuery的增加了機身的底部?還是有更好的方法來做我想做的事情?

+0

你不應該具有相同ID的多個元素。解決這個問題可能會解決這個問題。 –

+0

我不做第二個,jQuery。顯然,當我調用$(「#myDialog」)。dialog({...})時,它會複製#myDialog並將其添加到主體的末尾。 – Mike

+1

jQueryUI不創建副本,它實際上將該div移動到主體的末尾,因此仍然只有其中一個。 http://jsfiddle.net/dchSr/ –

回答

3

jQueryUI的實際創建對話框時,在DOM別處移動DIV,從而從原來的容器中進行移動它。因此,如果您嘗試在其原始容器上撥打empty(),則無法正常工作。

當側面板關閉時,而不是當對話框關閉時(如果對話框從未打開過,該怎麼辦)應該刪除對話框div。

+1

看起來他們正在爲此提出一個更好的解決方案,其中dialog對象元素將返回到原始位置http://blog.jqueryui.com/2011/09/dialog-api-redesign/ – Mike

+0

酷,應該讓這樣的問題更容易:-) –

0

$("#myDialog").dialog("close")不工作?

也應該是$('#myDialog').dialog("destroy").remove()

失敗,爲什麼不使用類而不是ID。這種方式重複無關緊要。

+1

ID應該是唯一的。使用一個類會得到多個元素,使用一個ID會得到一個。 –

1

你必須從DOM也將其刪除。在close事件試試這個:

$('#myDialog').dialog("destroy").remove(); 
+0

當我關閉ajax加載的內容並重新打開它時,這很好用。但是現在它不允許我在不關閉/重新打開ajax內容的情況下多次打開對話框,因爲它刪除了原始div和jQuery製作的副本。 – Mike

1

當您關閉對話框,然後它只是關閉對話框,但內容不會明確..如果你使用

$(this).dialog('destroy').remove() 

方法那麼它將所以,你必須清除所有內容從DOM刪除對話框通過你的自我..或者,當你重新打開對話框,那麼你必須清除所有數據

這是這樣的......試試吧...