2014-09-29 25 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