如何从外部调用$(document).ready中的函数

时间:2010-03-04 13:24:52

标签: javascript jquery function

如何从$(document).ready()外部调用函数lol(),例如:

$(document).ready(function(){  
  function lol(){  
    alert('lol');  
  }  
});  

尝试:

$(document).ready(function(){
  lol();
});

简单地说:

lol();

必须在外部的javascript中调用,如:

function dostuff(url){
  lol(); // call the function lol() thats inside the $(document).ready()
}

5 个答案:

答案 0 :(得分:56)

在窗口对象上定义函数,使其在另一个函数范围内变为全局:

$(document).ready(function(){  
  window.lol = function(){  
    alert('lol');  
  }  
});

答案 1 :(得分:37)

在定义函数的块之外,它超出范围,您将无法调用它。

然而,无需在那里定义功能。为什么不简单:

function lol() {
  alert("lol");
}

$(function() {
  lol(); //works
});

function dostuff(url) {
  lol(); // also works
}

可以全局定义函数,如下所示:

$(function() {
  lol = function() {
     alert("lol");
  };
});
$(function() {
  lol();
});

虽然有效但不推荐。如果您要在全局命名空间中定义某些内容,则应使用第一种方法。

答案 2 :(得分:3)

简短版:你不能,它超出了范围。像这样定义你的方法,以便它可用:

function lol(){ 
  alert('lol'); 
} 

$(function(){
  lol();
});

答案 3 :(得分:3)

你不需要和那个 - 如果一个函数是在Document.Ready之外定义的 - 但是你想调用它Document.Ready - 你就是这样做的 - 这些答案导致我的方向错误,不要再次输入函数,只是函数的名称。

      $(document).ready(function () {
     fnGetContent();
      });

fnGetContent在这里:

       function fnGetContent(keyword) {
            var NewKeyword = keyword.tag;
            var type = keyword.type;
            $.ajax({ .......

答案 4 :(得分:0)

使用jQuery安装Prototype的情况怎么样?我们为jQuery设置了noconflicts?

jQuery(document).ready(function($){  
     window.lol = function(){  
          $.('#funnyThat').html("LOL");
     }  
});

现在我们可以从任何地方调用lol,但是我们是否引入了与Prototype的冲突?