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

时间:2010-03-11 22:04:10

标签: javascript jquery javascript-events

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

$(function(){

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

  var function2 = function(data){
    //do something else
  }
});

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

Object.Namespace.callFunction = function(data){
 function1(data);
}

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

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

3 个答案:

答案 0 :(得分: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();
});

答案 1 :(得分:6)

如果你(出于文体原因)想要用你的$(文件).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) { };
});

答案 2 :(得分:3)

怎么样

  function function1(data){
    //do something
  }
  function function2(data){
    //do something else
  }

   $(function(){
      // if you need to call inside ready
      function1();
      function2();
   });