2012-07-19 451 views
0

我正在使用jQuery UI對話框功能,並且在關閉時,我想隱藏其中一個在我的對話框中的元素。jQuery對話框,關閉時隱藏對話框中的元素

我正在嘗試在對話框功能的關閉事件中執行此操作,但它不起作用。我猜測,因爲那個元素在關閉時不再存在。

這是代碼。

// Dialog settings for our edit dialog's 
$("#myDialog").dialog({ 
    autoOpen: false, 
    close: function(event, ui){ 
     $("#myDiv").hide(); 
    } 
}); 


<div id="myDialog"> 
    <div id="myDiv">This div should hide when the user closes the dialog, but it stays open when I re-open the dialog.</div> 
</div> 
+0

你的對話框的DIV沒有被隱藏與對話? – davidbuzatto 2012-07-19 17:39:35

+0

我的對話框中的div默認顯示,當我關閉我的對話框時,我希望它隱藏起來。 – 2012-07-19 17:39:59

+0

你能提供你的CSS嗎? – haynar 2012-07-19 17:41:13

回答

0

myDialog及其內的所有內容(包括myDiv)應該在對話框關閉時自動隱藏。你不需要編寫任何額外的代碼來實現這一點。如果不工作,那麼其他事情就是錯誤的。根據你的問題的代碼示例我的猜測:在默認情況下

  1. 隱藏myDialog,例如,<div id="MyDialog" style="display:none;">...
  2. 明確適當的時候打開的對話框中,例如,$("#myDialog").dialog("open");
-1

,你可能只需要參考這些元素相對於對話框。

$("#myDialog").dialog().find('#myDiv').hide() 

CNC中

close: function(event, ui){ 
    $(this).find('#myDiv').hide() 
    } 
+0

我不認爲有必要使用'find'方法,因爲他已經使用了ID選擇器並且它是唯一的。現有的代碼運行良好,除非他在代碼 – haynar 2012-07-19 17:54:24

+0

中有另一個邏輯錯誤這是不正確的。當他在對話框中放入html時,jquery會克隆該html。這意味着現在有該元素的兩個副本。然後jQuery將只返回它找到的第一個,如果你選擇ID。 – ChrisThompson 2012-07-19 17:59:00

+0

jQuery不克隆內容,這將是「不聰明」的方式來創建一個對話框,因爲我之前的評論已經提到過,因爲事件,樣式等等 – haynar 2012-07-19 18:01:43