2014-09-29 55 views
0

內的document.ready函數我有一個jQuery函數定義爲:調用來自外部的document.ready

jQuery(document).ready(function($){ 
function initAutoComplete(textBox, query, isMustMatch, isAjaxAfterKeyPress) 
     { 
      // autocomplete logic 
     } 

}); 

我從外面的document.ready調用這個函數爲:

initAutoComplete($("#txt" + FromTo + "Country"), "WebAddr?srvList=Country&areaCd=OT&val=", true, false); 

的無法識別initAutoComplete,它在document.ready()的作用域內是正確的。

我嘗試下面的代碼用window對象掛鉤函數:

window.initAutoComplete = function(textBox, query, isMustMatch, isAjaxAfterKeyPress) 
     { 
      //autocomplete logic 
     } 

現在,我從外面的document.ready作爲調用此函數:

initAutoComplete($("#txt" + FromTo + "Country"), "WebAddr?srvList=Country&areaCd=OT&val=", true, false); 

但我無法修復參考錯誤:initAutoComplete無法識別。 任何幫助表示讚賞。謝謝!

+3

爲什麼不在準備關閉之外聲明'initAutoComplete'? – dfsq 2014-09-29 22:01:48

+0

如果使用'window.initAutoComplete = ..'沒有修復錯誤,那麼該行在嘗試調用'initAutoComplete'之前不會運行。這個錯誤是完全可以解釋的,而且是正確的 - 那麼試圖調用什麼? *和*何時重要。 – user2864740 2014-09-29 22:02:31

+0

當我在document.ready()之外使用initAutoComplete()時,我的autocomplete.js中的autocomplete()函數無法識別。 – theConstructor 2014-09-29 22:06:21

回答

0

檢查這個討論

window.onload vs $(document).ready()

事件的順序取決於您使用的瀏覽器。有一個微妙的區別。如果可能,閱讀文章並做出必要的修改,以「加載」而不是「準備就緒」。

0

編輯:更改引用窗口使用jQuery版本作爲香草版本不起作用。

當你這樣定義窗口上的功能:

$(window).initAutoComplete = function(textBox, query, isMustMatch, isAjaxAfterKeyPress) 
     { 
      //autocomplete logic 
     } 

然後,你還需要調用它的窗口,像這樣:

$(window).initAutoComplete($("#txt" + FromTo + "Country"), "WebAddr?srvList=Country&areaCd=OT&val=", true, false); 

我要提及的唯一的另一件事是確保在document.ready之後調用它在document.ready之外。

+0

出現錯誤:TypeError:window.initAutoComplete不是函數。我確信在document.ready被激發時我正在調用window.initAutoComplete。 – theConstructor 2014-09-29 22:34:08

+0

嗯嘗試使用jQuery窗口對象,這是我過去如何做到這一點,我將用此更新答案。 – Phaeze 2014-09-29 22:36:20

+0

對不起,但仍然是相同的錯誤:TypeError:$(...)。initAutoComplete不是一個函數。 – theConstructor 2014-09-29 22:42:25