2013-03-11 77 views
1

我想打開一個jQuery UI對話框,其中的HTML已由ajax加載,但我只得到警報。如何打開ajax加載的jQuery UI對話框?

$(document).on("click",'#dialog-button',function(){ 
     alert('this works'); 
     $('#dialog').dialog('open');//this doesn't 
    }); 

當我不使用ajax(和.on)將模板放入模板中時,我沒有遇到任何問題。

對話框HTML由AJAX加載喜歡這個東西simular:

$.ajax({ 

type: "GET", 
dataType: "json", 
url: href, 

success: function(data){ 

$('#dialog-container').html(data.dialog); 

} 

}); 

而且在我的PHP,我會做這樣的事情:

<?php 
//assign some variables 
$array = array('dialog' => $this->smarty->fetch('dialog.tpl')); 
echo json_encode($array); 
?> 

這工作:

$(document).on("click",'#dialog-button',function(){ 

    alert('this works'); 

    $('#dialog').dialog({ 

    autoOpen : true, 
    height : 500, 
    width : 1000, 
    modal : true, 
    buttons : { 

     save : function() { 

      sendForm(); 
      $(this).dialog('close'); 

     }, 

     cancel : function() { 

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

     }, 

     close : function(){ 

      allFields.vall('').removeClass('ui-sate-error'); 

     }, 

    } 

}) 

}) 
+0

你有沒有包含jQuery Ui lib?並且似乎有一個額外的'});'。 – Jai 2013-03-11 18:00:56

+0

我使用的谷歌圖書館 – Tim 2013-03-11 18:32:13

回答

1

加載對話框內容後,您需要實際創建對話框:

success: function(data) { 
    $('#dialog-container').html(data.dialog); 
    $('#dialog').dialog({ 
     ..., 
     autoOpen: false 
    }); 
}, 

,然後你有上面的代碼實際上將使其出現:

$(document).on("click",'#dialog-button', function() { 
    $('#dialog').dialog('open'); 
}); 

確保#dialog最初是隱藏的,否則對話的內容將出現在頁面上,他們得到變成對話框之前。

+0

也,http://stackoverflow.com/questions/7375352/button-to-open-jquery-dialog-is-not-working – mhan 2013-03-11 18:10:44

+0

我做了你說的,並首先加載的內容,後我創建了對話框。它似乎沒有任何不同之處。 – Tim 2013-03-11 18:21:51

+0

@ user2157854所以請添加您關於如何加載內容的問題細節 - 不要忘記這將是一個異步操作。 – Alnitak 2013-03-11 18:45:33