如何调用中的$(document)。就绪从功能外它

问题描述:

你怎么称呼功能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() 
} 

定义窗口对象的功能,使其全球从另一个功能范围:

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

这个简单的解决方案适用于我 – 2012-03-28 10:17:51

+1

这是一个很好的解决方案,救了我小时! – Oritm 2012-09-27 20:01:50

+0

在我发现的所有令人困惑或复杂的答案中,这是唯一对我有用的东西。 – jyoseph 2015-04-22 18:40:49

之外的功能被定义在块的,这是超出范围,你就不能调用它。

但是没有必要定义存在的功能。为什么不干脆:

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

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

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

可以全局定义的函数是这样的:

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

这一工程,但不建议使用。如果你要在全局命名空间中定义一些东西,你应该使用第一种方法。

+1

我认为试图从第二个例子中定义全局函数时,为了避免歧义,你可以这样做:'窗口[“笑”] =功能( ){/ *函数的主体* /};'。 – Tadeck 2012-02-21 06:07:15

+0

http://api.jquery.com/ready/ – 2012-11-08 02:08:34

+0

verrrrrrrrrrrry goooooooooooooood这个 – ashkufaraz 2014-09-22 05:37:53

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

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

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

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

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

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

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

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

哪里fnGetContent是在这里:

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

这回答了实际问题的反面,但没有低估,因为它对于那些寻求它的人来说仍然有些帮助。 – Michael 2012-11-29 17:44:58

+0

我低估了,因为它不回答问题 – bonez 2014-07-15 20:44:32