2011-08-26 65 views
0

我想使用AJAX打開jQuery對話框。對話框的內容從查詢字符串中加載,幷包含表單標籤內的服務器控件。隱藏/重新顯示jQuery對話

我有一個GridView,其中每一行中的鏈接產生對話框。

第一次,對話框加載正常,但隨後我需要打開頁面上的另一個對話框,然後加載第一個對話框。我無法在以後再打開同一個對話框。檢查Firebug中的DOM會在頁面末尾顯示多個「容器」。我有一個GridView,其中一列包含一個鏈接和一個空的div。我已經簡化了控件ID,因爲它們是由ASP.NET錯位,但是這是我的代碼:

$('#linkId').click(function() { 
    $('#panelId').dialog({ 
      autoOpen: true, 
      height: 600, 
      width: 680, 
      modal: true, 
      show: 'blind', 
      hide: 'blind', 
      title: 'More Information', 
      open: function() { 
       $(this).load(url).parent().appendTo("form"); 
      }, 
      close(){ 
       // I've also tried using these (not both at the same time) 
       $(this).dialog('destroy').remove();// dialog never opens again 
       $(this).dialog('disable').remove();// dialog never opens again 
      } 
     }); 
     return false; 
    }); 
}); 

我已經嘗試添加所包含的功能給關閉事件,但我得到同樣的效果。否則,當對話最終打開時,一切都可以正常工作(儘管頁面末尾有多個對話框容器)。

回答

3

從JQ dialog api documentation

「如果你想重用一個對話框,最簡單的方法是禁用 「以自動打開」 選項:$(富).dialog({的AutoOpen: false}),並用$(foo).dialog('open')打開 。要關閉它,請使用 $(foo).dialog('close')。有關完整演示 的更深入解釋是可在the Nemikor blog

+0

看起來像它應該工作。謝謝。 – Echilon

+0

雖然這可能會工作,如果我玩了足夠長的時間,我最終會使用UpdatePanel和隱藏的文本框。當事情發生時,我需要顯示一些東西(例如:按鈕點擊或jQ UI日曆日期選擇),我填充隱藏的文本框,並使用jQuery在更新面板中觸發按鈕單擊。 – Echilon