2012-11-13 57 views
1

我有一個jqueryUI對話框,它向另一個頁面發出請求並加載對話框中的內容。jqueryUI上的打開事件間歇性地工作

jQuery("#someDialog").dialog({ 
    autoOpen: true, 
    draggable: false, 
    resizable: false, 
    modal: true, 
    open: function() { 
     jQuery(this).load('myurl?type=something'); 
    } 
});​ 

但是,此代碼有時只是打開對話框,並且加載的內容不顯示在對話框中。我懷疑這是因爲打開事件中的異步代碼。

有沒有辦法解決這個問題?

+0

在這裏看不到任何問題http://jsfiddle.net/paaH3/...你的'#someDialog'元素是靜態的嗎?那裏有不止一個元素嗎?你如何打開對話框? –

+0

'#someDialog'元素是靜態的。 'myurl'中有一個jqGrid,它向URL發出一個請求來加載它的數據。所以,當每件事情都很順利的時候,當打開對話框1)到myurl和2)到'urltoloadGridData'時,我看到有兩個調用正在進行。但是,當模式框中沒有加載時,我只能看到第一個調用,而不是後者。 – birdy

回答

0

我通常將內容加載到變量div中,然後在打開對話框時將其作爲對話框的文本。

$('#popupWindow').load('whatever?type=something', function() { 

    // using the callback function on .load() we can ensure 
    // the content is always loaded before opening the dialog also 

    var _dialogBox = $('<div id="dialogBox" />'); 

    // put the html inside of the dialog 
    _dialogBox.html($('#popupWindow').html()); 


    _dialogBox.dialog({ 
     autoOpen: true, 
     draggable: false, 
     resizable: false, 
     modal: true 
    });​ 

    _dialogBox.dialog('open'); 
}); 
+0

嗯,非常好的把戲。然而,在我的例子中,這樣做是在一個新的尋呼機中打開彈出框,而不是一個模式框。 – birdy

+0

忘記提及在這種情況下,div#popupWindow已經在頁面的html和'display:none;'中。這可能是爲什麼它打開一個新的頁面 –

+0

我沒有看到'text'作爲jQueryUI的方法之一:http://api.jqueryui.com/dialog/ – birdy

相關問題