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

如何从$(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() } 

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

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

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

但是,没有必要在那里定义function。 为什么不简单:

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

可以像这样全局定义函数:

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

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

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

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

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

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

fnGetContent在这里:

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

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

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

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