2015-05-04 34 views
0

我有這個問題。我打開我的jQueryUI對話窗口,但我需要調用一些額外的功能。重點是,對話框的內容由AJAX加載,我也需要使用AJAX加載任何其他內容(我有一些類型的列表,因爲列表可能包含大量的項目,我需要分割它成爲更小的數據)這裏是我的代碼:無法在jQueryUI對話框上執行javascript功能

<script type="text/javascript"> 
    $(function() { 
     loadObjects(1); 
    }); 
    var loadObjects = function(page) { 
     // do something 
    }; 
</script> 

我的控制檯告訴我? TypeError:'loadObjects'不是函數。但是當我嘗試在jQueryUI對話框中(而不是在平面頁面上)運行此代碼時,顯然沒有問題。

當我GOOGLE了這個錯誤,我只發現,jQuery可能會故意阻止任何JS代碼,因爲一些IE瀏覽器的錯誤。

任何人都可以幫助我嗎?

謝謝!

回答

3

首先放置loadObjects函數聲明。

<script type="text/javascript"> 
    var loadObjects = function(page) { 
     // do something 
    }; 
    $(function() { 
     loadObjects(1); 
    }); 
</script> 

你可以(並且可能應該)做什麼,以避免這是將函數定義loadObjects()到一個單獨的JS文件,然後包括頁文件中,您從它使用的任何東西之前。 (主要的例外,當然是當你無法加載頁面JS文件,或者當你需要動態生成函數的定義,其中包括罕見的情況。)

+0

非常感謝!完全幫助切換定義(首先定義函數loadObjects然後定義jQuery $(function(){})。我實際上不希望這些簡單的JS函數在單獨的文件中。我有很多對話框和單獨的模式視圖文件會有點混亂,同時保留所有的內容,但再次感謝! – Mikec007

1
$(function() { 
    var loadObjects = function(page) { 
    // do something 
    } 

    loadObjects(1);   
}); 

你的函數應被定義。一旦你定義它,就調用它。

0

當你使用jQuery對話框時,你首先需要確保內容被加載。要實現這一點,您可以在對話框初始化中使用open event處理程序:

$(".selector").dialog({ 
    open: function(event, ui) { 
     var loadObjects = function(page) { 
     // do something 
     }; 
     $(function() { 
     loadObjects(1); 
     }); 
    } 
}); 
+0

謝謝,但實際上我不能這樣做。我有很多對話框的模態視圖,所以我想這個定義到所有視圖。無論如何謝謝你! – Mikec007