如何在全球范围内提供$(document).ready()函数?

sct*_*skw 5 javascript jquery javascript-events

我在这里有一个有趣的问题听起来很傻,但是这里有.使用JQuery的ready函数我定义了一些函数,如下所示:

$(function(){

  var function1 = function(data){
    //do something
  }

  var function2 = function(data){
    //do something else
  }
});
Run Code Online (Sandbox Code Playgroud)

出于某种原因,为了让IE呈现我正确使用的东西,必须在$(document).ready()函数中完成.但是,一旦我从服务器端获得数据集,我需要触发这些功能.所以我想我会做这样的事......

Object.Namespace.callFunction = function(data){
 function1(data);
}
Run Code Online (Sandbox Code Playgroud)

...放在脚本中的ready函数之外,以便我可以直接调用它.

不幸的是,我知道这不起作用,因为它似乎不符合逻辑,我已经尝试过了!我使所有这些功能都是随意的,因为它与内容无关,而是概念.我还尝试使用事件处理程序在获取数据后触发函数 - 无济于事!在$(document).ready()全局内部创建函数的最佳方法是什么?

Pet*_*dIt 6

如果要定义全局函数,则没有理由在文档中准备好它们.文档准备就绪的唯一内容是需要等到文档准备就绪才能采取行动的事情.在文档准备好之前可以进行定义功能.

// Defining the functions in the global scope.
var function1 = function(data){
    //do something that requires the dom to be ready.
}

var function2 = function(data){
    //do something else that requires the dom to be ready.
}
$(function() {
    // Running the functions when the document is ready.
    function1();
    function2();
});
Run Code Online (Sandbox Code Playgroud)


Ply*_*ynx 6

如果你(出于文体原因)想要用$(document).ready内联编写函数,你可以这样做:

var app={}; /*Use whatever your apps name is, abbreviated (something short)*/
$(function()
{
  app.function1 = function(data) { };
  app.function2 = function(data) { };
  // now you can call all functions inside and outside this ready function with the app. prefix
  // if you also want a local reference to the function without the app. prefix, you can do:
  var function1 = app.function1 = function(data) { };
});
Run Code Online (Sandbox Code Playgroud)