2012-05-10 179 views
8

我有一個對話框模式,當點擊「保存」或「取消」時不會關閉。我已經比較jQuery UI's official demo page,似乎無法找到爲什麼這不起作用。jquery對話框模式不關閉

以下是我有:

$(function() { 
      $("#DetailsWindow").dialog({ 
       autoOpen: false, 
       resizable: false, 
       height: 500, 
       width: 600, 
       modal: true, 
       title: 'Appointment Details', 
       buttons: { 
        "Save": function() { 
         $(this).dialog("close"); 
        }, 
        "Cancel": function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 

      $('button').click(function() { 
       $("#DetailsWindow").dialog("open"); 
      }); 
     }); 

HTML:

<button>A button</button> 
     <div id="DetailsWindow"> 
      <h3>Title</h3> 
      <span>Some Text</span> 
     </div> 

回答

15

$('button')查詢應該更嚴格,否則所有<button>標籤相匹配的網頁上,包括jQuery的對話框內,導致它繼續開放。

我建議增加一類到您的主鍵:

<button class="open-details">A button</button> 

,然後改變你的JavaScript來:

$('button.open-details').click(function() { 
    $("#DetailsWindow").dialog("open"); 
}); 
+0

+1,這是問題所在。該對話框正在關閉,然後立即重新打開,因爲您的處理程序在對話框中運行以用於「保存」和「取消」按鈕。 –

+1

我的回答是錯誤的,謝謝@Rocket – MilkyWayJoe

+0

引用(現在刪除)答案的評論:其實,這是你的想法。在這些函數中,這是您調用.dialog的DOM元素。從文檔(在'選項'>'按鈕(對象)'下):「回調的上下文是對話框元素」 – MilkyWayJoe

1

嘗試使用:

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

相反的:

$(this).dialog("close");