2013-05-16 56 views
0

我有一個JQuery UI對話框,打開裏面的另一個頁面。當我點擊取消並嘗試再次點擊它,它不會打開。我在網上搜索,發現一個答案,說我只需要初始化對話框一次,只需在用戶點擊按鈕時打開。我嘗試將初始化代碼移動到頁面加載部分,並且只對該按鈕進行對話(「打開」),但我仍然遇到與以前相同的問題。你如何設置對話框,以便取消並再次打開它?JQuery UI對話框只能工作一次

初始化代碼:

var scanDialog = $("#dialog").dialog({ 
        height:600, 
          width:800, 
        modal: true, 
          autoOpen:false, 
        buttons: { 
        "Scan": function() { 
         //scanning code 
        }, 
        Cancel: function() { 
           scanDialog.load("url.html").dialog("close"); 
        } 
        } 
       }); 

加載代碼:

scanDialog.load("url.html").dialog('open'); 
+0

你更換'#dialog'元素時加載新的一頁? – Barmar

+0

這是否會因爲任何原因調用'_destroy()'?你也可能會失去你的身份證。 – abdkw

+0

我從來沒有任何問題重複使用對話不止一次。我看到你打開之前加載網址...可能這是可能的你的網址包含其他元素與ID等於你的對話框ID導致衝突? – Baral

回答

0

也許不是一個正確的答案,但我有這個幾個月前,類似的問題,這是因爲「莫代爾:真正的「財產。我必須刪除模式屬性才能使按鈕功能。我認爲這是一個jQuery中的錯誤。

0

嘗試從DOM

scanDialog.load("url.html").dialog("destroy"); 

中序破壞對話框不鬆動的DIV ID,可以追加對話框ID到它的父DOM名。

 var DialogParent = $(this).parents("div:eq(0)"); 
     var Diag = myParent.attr('id') + 'Diag'; 

     var scanDialog = $("#" + Diag).dialog({ 
        height:600, 
          width:800, 
        modal: true, 
          autoOpen:false, 
        buttons: { 
        "Scan": function() { 
         //scanning code 
        }, 
        Cancel: function() { 
scanDialog.load("url.html").dialog("destroy");// Destroy, not close 
        } 
        } 
       }); 

然後,

$("#" + Diag).dialog('open');