2012-05-03 38 views
1

打開我有一個用戶界面對話框的視圖選擇是在幾乎每一頁,所以我把它移到一個外部JS文件。jQuery UI的對話框調用不會從外部文件

它完美到處被通過點擊函數調用頁面上,但一個頁面,在這裏我想取決於JavaScript變量的值會自動打開的對話框上,它失敗。

這是因爲加載外部的js文件時,對話框的HTML不存在?如果我將外部移動回頁面,它可以正常工作。

誰能給我一個解決方案,我真的想保持查看對話框初始化代碼在外部文件。

外部JS文件

$(function() { // ******* The Views Dialog 
    var $divViewDialog = $('#divViewDialog'); 
    $divViewDialog.dialog({ autoOpen: false, modal: true,title: 'Select required view'}); 
    ..... etc 

頁面代碼中調用該對話框 -

$(function() { 

// ********* Other unrelated stuff 

    if (ulx>1) { $divViewDialog.dialog('open');} // If logged in, Show View Dialog 

    else {$divLoginDialog.dialog('open');}  // else show Login Dialog 

});

回答

1

可能是因爲他們都被設置爲在執行文件準備好了,如果第二個先執行然後在對話框線了實際上沒有發生過。你應該改變線後成爲一個JavaScript函數,然後調用您的頁說功能之前打開的對話框。

編輯:此外,您將divViewDialog放入只能在頁面中訪問的變量,因此它不會在外部文件中工作。我更新了下面的代碼,不再使用divViewDialog變量。

試試這個:

外部JS文件

function wireUpDialog() { 
    $('#divViewDialog').dialog({ autoOpen: false, modal: true,title: 'Select required view'}); 
    ..... etc 
} 

頁:

$(function() { 
    wireUpDialog(); 
    if (ulx>1) { $('#divViewDialog').dialog('open');} 
    else {$divLoginDialog.dialog('open');} 
}); 
+0

感謝mattytomo。它沒有解決我的問題,一旦js文件對話框被包裹在wireUpFDialog函數中,其他頁面顯然停止工作,並且在每個頁面上調用wiresUpFDialog()都不起作用。儘管如此,你立即回答了兩個問題(我完全忽略了這個變量仍然是函數的本地變量)。現在我會進一步做實驗,你已經指出了問題的出現。我非常感謝你的幫助,謝謝。 – KenAshton

+0

@KenAshton是的說實話,我一開始並沒有意識到你是這麼做的!沒問題,很高興我可以幫助:) – mattytommo